1.模型变换(Model transformation)---- 视点不变,变物体
我们在OpenGL中通过定义一组顶点来定义一个模型,我们遇到的平移、缩放、旋转等变换都可以理解为模型变换,视点不变,主要对物体进行操作。
在OpenGL中,我们使用glMatrixMode(GL_MODELVIEW)来处理模型变换,我们知道OpenGL使用堆栈管理矩阵,所以我们有不同的堆栈进行管理,有模型变换矩阵堆栈,视点变换矩阵堆栈,还有纹理变换矩阵堆栈等等,这句话就是告诉OpenGL,我们要处理模型变换。
2.视点变换(View transformation)---- 物体不变,变视点
OpenGL成像主要是采用虚拟相机模型,在场景中我们通过模型变换,将物体放在场景中不同的位置,最终哪些部分需要显示在屏幕上,主要是由视点变换、投影变换等决定。视点变换阶段,我们通过假想的相机来处理矩阵计算。,所谓的视点空间,视点坐标系都是为了方便处理,引入的坐标空间。
在OpenGL中,我们主要使用
gluLookAt(eyex,eyey,eyez,centerx,centery,centerz,upx,upy,upz)
来达到模拟物体不动,变换视点的效果
总结
其实两者本质上是一样的,gluLookAt()还是只是计算出了一个变换矩阵