1. OpenGL中的颜色 在未使用光照系统的前提下,我们可以直接为图元指定颜色。在传入顶点之前调用glColor函数,就可以为即将指定的顶点设置颜色。例如: glBegin(GL_TRIANGLES); 将绘制一个红色的三角形。在绘制图元时,OpenGL会自动将图元的第一个顶点的颜色作为整个图元的颜色。但有些时候,你可能希望为一个图元的各个顶点指定不同的颜色,使它们自然过度,就像图5.1-1那样。 这时,我们需要在绘制图元之前调用如下函数: glShadeModel(GL_SMOOTH); 让OpenGL对顶点之间的颜色进行平滑过度。你可以把参数改为GL_FLAT,禁止OpenGL对顶点进行平滑过度。 2 OpenGL 光照模效果的原理 OpenGL的光照模型是用来模拟现实生活中的光照的。它根据顶点的法线向量和光源的位置决定顶点的明暗程度,根据顶点的材质和光源中三原色的成分来决定物体将表现出怎样的颜色。 值得一提的是材质。OpenGL中的材质并非我们平常所说的组成物体的元素(如木材、金属材质),而是指一个物体对不同颜色的光的反射和吸收程度。比如,在光照系统中,如果一个物体表现为红色,则是因为这个物体吸收了从光源放射出来的绿色和蓝色光,而将绝大多数红色的光反射了出来。正因如此,一旦你开启了光照系统,就要通过指定物体的材质来决定这个物体是什么颜色。既然这样,你可能会想到怎样表现类似金属、玻璃等物质质感,但这些除了要使用光照系统并为它们指定合适的材质外,还要使用纹理贴图来表现质感。 使用OpenGL的光照模型包括以下几个步骤: · 设置光源的种类、位置和方向(对于平行光源) · 为每个图元的每个顶点指定它的法线向量 · 为各个图元指定它的材质 启用光照模型 |