用照相机比喻从绘制三维物体到二维屏幕显示的变换过程:
1 视图(视点)变换:把相机放在三角架上,并对准场景;
2 模型变换:对场景进行安排,使物体在照片中位于你所希望的位置;
3 投影变换:选择相机的镜头,调整放大倍数;
4 视口变换:确定照片的大小。
在代码中,视图变换必须放在模型变换之前,但可以在绘图之前的任何时候执行投影变换和视口变换。视图变换函数gluLookAt()和模型变换函数glTranslate()等通常放在函数display()中,而视口变换函数glViewport()和投影函数glFrustum()等放在reshape()中。
display()函数里包含了视图变换、模型变换、以及绘制场景的函数。这样display()函数被重复调用,以绘制窗口的内容。display()潜在的重复使用性强调了执行视图和模型变换之前必须载入单位模型视图矩阵(即调用glLoadIdentity()函数)。reshape()函数包含了视口变换和投影变换,当窗口初次创建、移动或改变形状时,