投影变换就是要确定一个取景体积,其作用有两个:
1). 确定物体投影到屏幕的方式,即是透视投影还是正交投影。
2). 确定从图象上裁剪掉哪些物体或物体的某些部分。
投影变换包括透视投影和正交投影(平行投影)。
-
透视投影
透视投影的示意图如下,其取景体积是一个截头锥体,在这个体积内的物体投影到锥的顶点,用glFrustum()函数定义这个截头锥体,这个取景体积可以是不对称的,计算透视投影矩阵M,并乘以当前矩阵C,使C=CM。
图5-1-11 透视投影示意图
-
正交投影
正交投影的示意图见下:其取景体积是一个各面均为矩形的六面体,用glOrtho()函数创建正交平行的取景体积,计算正交平行取景体积矩阵M,并乘以当前矩阵C,使C=CM。
void glOrtho(Gldouble left,Gldouble right,Gldouble bottom,Gldouble top,Gldouble near,Gldouble far);
该函数以正交投影矩阵乘当前矩阵。
图5-1-12 正交投影示意图
在通过视图造型矩阵和投影矩阵变换场景中对象的顶点后,任何位于取景体积外的顶点都被裁剪掉。除此之外,还可指定附加的任意位置的裁剪面,对场景中的物体作进一步的裁剪选择。