Основной вопрос освещения OpenGL - PullRequest
4 голосов
/ 13 ноября 2010

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

Ответы [ 2 ]

5 голосов
/ 13 ноября 2010

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

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

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

3 голосов
/ 13 ноября 2010

Полагаю, вы еще не используете фрагментный шейдер.От 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

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

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

...