我正在制作一个需要正交投影的程序。因此,我使用glOrtho()。我做了一个缩放函数,但我想知道是否可以旋转视图?因为glOrho()只能与其他平面平行。或者有另一种投影方式可以实现旋转。glLookAt可以旋转,但是当离相机越远时会改变尺寸。我阅读了如何使glOrtho平行六面体旋转,但没有得到答案。
我正在制作一个需要正交投影的程序。因此,我使用glOrtho()。我做了一个缩放函数,但我想知道是否可以旋转视图?因为glOrho()只能与其他平面平行。或者有另一种投影方式可以实现旋转。glLookAt可以旋转,但是当离相机越远时会改变尺寸。我阅读了如何使glOrtho平行六面体旋转,但没有得到答案。
这里的关键是通常将操作分为两个矩阵:(模型)视图和投影。
虽然glOrtho()
通常与glMatrixMode(GL_PROJECTION)
一起调用,但所有有关移动和旋转相机的操作(例如glRotate*
、glTranslate*
和gluLookAt
)都应该在glMatrixMode(GL_MODELVIEW)
之前执行。
在固定管线中,顶点的最终位置是通过将输入数据乘以这两个矩阵来计算的,所使用的投影(正交或透视或非线性等)与相机变换是分开的。