为什么OpenGL中有glMatrixMode?

Ren*_*ger 12 opengl

我只是不明白OpenGL的glMatrixMode用途.

据我所看到的,当glMatrixMode(GL_MODELVIEW)被调用时,它后跟glVertex,glTranslate,glRotate之类的,那就是,OpenGL命令的地方某处空间中的一些对象.在另一方面,如果glOrtho还是glFrustum还是gluProjection 被称为(放置的对象即如何渲染),它有一个电话前述glMatrixMode(GL_PROJECTION).

我想我至今写的是一个假设上有人会证明我错了,但不用不同的矩阵模式如果正好,因为有各种不同的GL-功能:那些关注的配售对象和那些如何对象被渲染?

Kos*_*Kos 21

这很简单,可以简单回答:

  • 渲染顶点(如glVertex),取决于称为"模型 - 视图矩阵""投影矩阵"的矩阵的当前状态,

  • 的命令glTranslatef,glPushMatrix,glLoadIdentity,glLoadMatrix,glOrtho,gluPerspective和全家影响当前矩阵(这是上述任何一种),

  • 该命令glMatrixMode 选择受前述命令影响的矩阵(模型视图或投影).

(此外,还有用于纹理坐标的纹理矩阵,但它很少使用.)

所以常见的用例是:

  • 大多数时候模型视图矩阵都有效,
  • 无论何时必须初始化投影矩阵(通常在开始时或可能调整窗口大小),将活动切换到投影,设置透视,然后恢复到模型视图.