Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Раличные материалы для различных объектов |
Автор: Annihilator 14.5.2009, 21:27 | ||
Есть два объекта - конус и прямая. Как сделать так, чтобы материал прямой был одного цвета, а конуса - другого и возможно ли это. Проблема в том, что у каждого объекта есть функция LightMaterial(), в ней происходит создание и установка материала
так вот, в зависимости от того, LightMaterial() какого объекта вызовется позднее, таким и будет цвет прямой и конуса |
Автор: C/L 15.5.2009, 09:33 |
А в чем проблема? Рисовать объекты наверно нужно по отдельности. Т.е. или у каждого объекта своя функция рендер со своим SetMaterial. Или в главной функции рендера вызывать для каждого объекта сначала SetMaterial( pObject->Material ) а потом pObject -> Render(). Или такой изврат: загнать в регистры видеокарты массив материалов, проиндексировать по материалу вершины в буфере и написать для всего этого шейдеры. Вариантов много... |
Автор: Annihilator 15.5.2009, 12:44 |
Так у меня и так для каждого объекта своя функция установки материала |
Автор: C/L 15.5.2009, 13:49 |
Так это функция создания. Создать материал можно и один раз а устанавливать его надо каждый раз перед рисованием, чтобы заменить предыдущий. Интересно в таком случае увидеть как происходит рендеринг объектов. |
Автор: Annihilator 16.5.2009, 09:32 |
хм... я кажется понял, в чем моя ошибка. У меня объекты сначала создаются все, а потом рендерятся. Надо переделать значит так, чтобы объект рендерился сразу после того как создался! |