【发布时间】:2010-12-02 00:43:57
【问题描述】:
在红皮书的球体照明示例中,我读到了以下内容:
GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
然后它说:
在本例中,前三个调用 到 glLightfv() 是多余的,因为 它们被用来指定 GL_AMBIENT 的默认值, GL_DIFFUSE 和 GL_SPECULAR 参数
据我所知,每个光源都有其环境、漫反射和镜面反射参数的默认值,这三个数组指定了这些默认值,是吗? 是否每个光源默认是漫反射、镜面反射和环境光?
【问题讨论】:
-
BTW- 红皮书有点老了,你可以根据理论来源使用它,但最好不要将它用作 OpenGL 教程。如今,处理照明(除其他外)最好和最简单的方法是使用着色器,这是您应该尽快深入研究的方法。