/*******************************************************************/
本文总结自《OpenGL入门教程》,大家可以下载。
/*******************************************************************/
OpenGL场景中模型颜色的产生,大致为如下的流程图所描述:
++
++++++ ++++++ ++++++ ++++++
(1)当不开启光照时,使用顶点颜色来产生整个表面的颜色。
用glShadeModel可以设置表面内部像素颜色产生的方式。GL_FLAT/GL_SMOOTH.
++
(2)一般而言,开启光照后,在场景中至少需要有一个光源(GL_LIGHT0...GL_LIGHT7)
通过glEnable(GL_LIGHT0) glDisable(GL_LIGHT0) 来开启和关闭指定的光源。
--- 全局环境光 ---
GLfloat gAmbient[] = {0.6, 0,6, 0,6, 1.0};
glLightModelfv(GL_LIGHT_MODEL_AMBINET, gAmbient);
(3)设置光源的光分量 -- 环境光Ambient/漫色光Diffuse/镜面光Specular
详细图:
默认情况下,GL_LIGHT0...GL_LIGHT7 的GL_AMBIENT值为(0.0, 0.0, 0.0, 1.0);
GL_LIGHT0的GL_DIFFUSE和GL_SPECULAR值为(1.0, 1.0, 1.0, 1.0),
GL_LIGHT1...GL_LIGHT7 的GL_DIFFUSE和GL_SPECULAR值为(0.0, 0.0, 0.0, 0.0)。