2010-11-13 3 views
4

Я думаю, что это очень глупый вопрос, но я новичок в графике и openGL. Нарисов сферу и поставив источник света поблизости, также указав окружающий свет, я начал экспериментировать со светлыми и материальными ценностями и пришел к неожиданному выводу: цвета, которые мы указываем с помощью glColor*, вообще не имеют значения при включении освещения. Вместо этого эквивалент - это окружающий компонент материала. Правильно ли это заключение? СпасибоОсновная проблема освещения OpenGL

ответ

5

Если освещение включено, то вместо цвета вершины, материала цвета(ну, цвета - есть несколько из них для разных типов отклика на свет) используется. Цвет материала задается функциями glMaterial*.

Если вы хотите повторно использовать свой код, вы можете использовать glEnable(GL_COLOR_MATERIAL) и glColorMaterial(GL_AMBIENT_AND_DIFFUSE), чтобы ваши старые звонки glColor* были отображены в цвет материала автоматически.

(И, пожалуйста, переключитесь на шейдеры так быстро, как это возможно - шейдер подход проще и более мощные)

+0

Я так много слышал об этих шейдеров, но я понятия не имею, что они есть. Думаю, мне просто нужно быть терпеливым, пока я не попаду в соответствующие главы Redbook :) Спасибо за ответ –

+0

Redbook так же устарел, как и весь фиксированный рендеринг функций, который мы обсуждаем. Вы можете прочитать его для какой-то теории, и все. Для учебников шейдеров, Google для Lighthouse3D. :) Также взгляните на OpenGL 2.1 или OpenGL 3 справочные документы на opengl.org/documentation/specs/ - они несколько большие, но спуск даст вам представление о том, как работает OGL. – Kos

+0

@Kos: Если redbook устарел, какую книгу вы бы порекомендовали? Документация не является книгой, это хорошо, но новичкам трудно напрямую использовать документацию. –

3

Я полагаю, вы еще не используете фрагментарный шейдер. От glprogramming.com:

vertex color = 
    the material emission at that vertex + 
    the global ambient light scaled by the materials ambient 
    property at that vertex + 
    the ambient, diffuse, and specular contributions from all the 
    light sources, properly attenuated 

Так что да, вершина цвет не используется.

Edit: Вы можете также искать для уравнения GL молнии в спецификации GL (у вас есть один ряд, да ^^?)

Смежные вопросы