(1)记住,计算机图形的要点就是创建三维物体的二维图像(它必须是二维的,因为它是在平面的屏幕上显示的)。但是,当你决定在屏幕上绘图时,你必须用三维坐标的方式来考虑。
(2)“视图和模型变换”:这些变换对模型和照相机的相对位置进行定位,以获得所需的最终图像。
“投影变换”:描述了如何指定可视空间的形状和方向。可视空间决定了场景将如何投影到屏幕上(使用正投影或透视投影),以及哪些物体(或物体的一部分)将被裁剪掉。
“视口变换”:解释如何把三维的模型坐标转换为屏幕坐标。
(3)在代码中,视图变换必须出现在模型变换之前,但可以在绘图之前的任何时候执行投影变换和视口变换。
(4)注意display()函数包括模型变换和视图变换,以及用于绘制立方体的函数glutWireCube()(相对于书中的例子)。这样,display()函数可以被重复调用,以绘制窗口的内容。例如,当窗口被移动或者原先遮住这个窗口的东西被移开时,就需要重复调用display()函数,并经过适当的变换,保证这个立方体是按照希望的方式进行绘制。display()潜在的重复作用性强调了在执行视图变换和模型变换之前载入单位矩阵的必要性,特别是在两次display()函数调用之间插入了其它变换的情况下。
(5)当窗口初次创建时,移动或改变形状时,reshape()函数就会被告调用。这是合理的,因为投影(投影可视空间的宽度——高度纵横比)和应用视口都是与屏幕直接相关的,具体地说, 与屏幕或窗口的大小或纵横比直接相关。
(6)在程序中所调用的最后一个变换函数实际上是第一个应用于顶点的。