手机游戏软件专题:构建场景之添加光照本案例是一个综合性的案例,程序框架基于本书前两节的简单小场景案例和带纹理的小场景案例,在上面的基础上,本节会给这一个案例增添光照的效果。本案例中比前两个案例添加了一个maths包。Vector3d类在maths包中它主要用于向量的计算。在本案例OpenGL中添加光照主要分三步:设置光源参数、开启光照、。通过多次调用带有不同参数的glLightfv()函数来实现。一般会设置环境光(Ambient)、漫射光(Diffuse)、光照位置(Position)等。通常在初始化时完成本案例还有发射光(Specular)。。glEnable(GL_LIGHTING)和glEnable(GL_LIGHT1)。前者相当于是光照的总开关。后者则开启相应号数的光源(OGL中可开启8个光源,分别对应数字0--7)。通常在初始化时完成(需要在程序运行中交互的开关灯光,可以在按键程序中进行开关的控制)。,我们还需要设置材料属性,只有设置了材料属性,我们的多边形才可以反射光线。 设置材料属性可以使用两种方法,第一种是在指定每个多边形或每组多边形之前使用glMaterial方法 glMaterial方法的第一个参数指定了材料属性是作用于正面、背面还是双面(GL_FRONT、GL_BACK、GL_FRONT_AND_BACK);第二个参数指定将要设置环境光和散射光的反射率,在这里它们被设置为相同的值;最后一个参数是数组,包含了构成材料属性RGBA值。在大多数情况下,环境光和散射光成分是相同的。为了在OpenGL中使用光照计算,我们需要调用glEnable方法,并用GL_LIGHTING作为参数。这个调用告诉OpenGL在确定场景中每个顶点的颜色时使用光照参数和材料属性。当然,如果我们没有指定任何光照参数和材料属性,那么物体仍将会保持为黑暗的无光照状态。在GLRender类中,先创建一个对象ground(RectanglePlane类型)用于地面的绘制,此外还需要有一个对象pillar(Cone类型),用于八个圆柱的绘制。接着,在GLRend
添加光照 来自淘豆网m.daumloan.com转载请标明出处.