增加变量
变量light:跟踪光照是否打开。
变量lp和fp:存储'L'和'F'键是否按下的状态。
变量xrot yrot:控制绕x轴和y轴旋转角度的步长.
变量xspeed yspeed:绕x轴和y轴的旋转速度。
变量z:来控制进入屏幕深处的距离。
光源:创建光源的过程和创建颜色的完全一致。前三个参数分别是RGB三色分量,最后一个是alpha通道参数。(1.0最亮 0.0最暗)
环境光 LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }
漫射光 LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }
光源位置(重要):前三个参数是XYZ轴上的位移,最后一个是这里指定的坐标就是光源的位置.
LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f }
变量filter:跟踪显示时所采用的纹理类型。
滤波方式:gl_nearest(不光滑),gl_linear(线性滤波),离屏幕越近的图像看起来就越光滑,mipmapped(创建一个外观十分优秀的纹理)。根据使用类型,filter 变量的值分别等于 0, 1 或 2 。
数组texture[3]:为三种不同纹理分配储存空间。
载入位图和创建不同的纹理
创建纹理的新方法(mipmapped 纹理的生成):gluBuild2DMipmaps可以使用任意的位图(没有高宽的限制)来创建纹理。OpenGL将自动将它缩放到正常的大小。
InitGL函数
载入纹理,启用纹理.
设置光源:环境光,漫射光,光源位置
DrawGLScene函数:绘制贴图立方体
绑定的纹理:texture[filter]
glNormal3f()法线设置:使用光源时必须指定一条法线。
WinMain()主函数
开关光源(L)、旋转木箱(箭头)、切换过滤方式(F)以及将木箱移近移远的控制(Page Up/Down)。