Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Раличные материалы для различных объектов


Автор: Annihilator 14.5.2009, 21:27
Есть два объекта - конус и прямая. Как сделать так, чтобы материал прямой был одного цвета, а конуса - другого и возможно ли это. Проблема в том, что у каждого объекта есть функция LightMaterial(), в ней происходит создание и установка материала
Код

pDirect3DDevice->SetMaterial(&Material);

так вот, в зависимости от того, LightMaterial() какого объекта вызовется позднее, таким и будет цвет прямой и конуса

Автор: C/L 15.5.2009, 09:33
А в чем проблема? Рисовать объекты наверно нужно по отдельности. Т.е. или у каждого объекта своя функция рендер со своим SetMaterial. Или в главной функции рендера вызывать для каждого объекта сначала SetMaterial( pObject->Material ) а потом pObject -> Render(). Или такой изврат: загнать в регистры видеокарты массив материалов, проиндексировать по материалу вершины в буфере и написать для всего этого шейдеры. Вариантов много...

Автор: Annihilator 15.5.2009, 12:44
Так у меня и так для каждого объекта своя функция установки материала
Цитата(Annihilator @  15.5.2009,  01:27 Найти цитируемый пост)
у каждого объекта есть функция LightMaterial()


Автор: C/L 15.5.2009, 13:49
Так это функция создания. Создать материал можно и один раз а устанавливать его надо каждый раз перед рисованием, чтобы заменить предыдущий. Интересно в таком случае увидеть как происходит рендеринг объектов. 

Автор: Annihilator 16.5.2009, 09:32
хм... я кажется понял, в чем моя ошибка. У меня объекты сначала создаются все, а потом рендерятся. Надо переделать значит так, чтобы объект рендерился сразу после того как создался!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)