在三维世界中,我们定义,根据观察者来观看模型的矩阵叫模型视图矩阵,其实也是相对的,模型相对于观察者来说;
当把模型映射到照相机的平面时要用到投影矩阵的概念;
同时将可以在照相机的平面定义视口的大小,这就是视口矩阵。
glMatrixModel(GL_MODELVIEW);
glLoadIdentity();
表示当前矩阵为模型视图矩阵,并且设置为单位阵。
进行模型视图变换主要涉及到三个函数:
glTranslate*
glScale*
glRotate*
分别表示平移、缩放和旋转。还有要注意,其实每一个操作相当于在当前矩阵上乘以了一个矩阵,所以代码的顺序和实际变换的顺序正好相反。
glMatrixModel(GL_PROJECTION);
glLoadIdentity();
表示当前矩阵为投影矩阵,并将其设置为单位阵。
可根据
glPerspective
glFrustum
这两个函数将当前的可视空间设置为透视投影空间;
可使用
glOrtho
函数设置当前可是空间为正交投影空间。
最后可以使用
glViewport
来定义视口。
在程序中我们经常要修改各种各样的矩阵,那么为了不将他们混淆,可以随时回到之前的状态;
glPushMatrix
glPopMatrix
负责保存和提出矩阵。
gluLookAt前三个参数表示观察者的位置,中间三个参数表示观察目标的位置,最后三个参数代表(0,0,0)到(x,y,z)的直线,它表示了观察者认为的“上方向”。