我正在阅读一本关于OpenGL,SDL的书,并阅读了一些OpenGL文档。我也读过这篇文章:What does glLoadIdentity() do in OpenGL?
我正在抓住glLoadIdentity()的作用,以及为什么它在一般意义上被使用(将当前矩阵返回到其原始状态)。我不知道的是为什么我将它恢复到原始状态。例如:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, 640, 480, 0.0f, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
我不确定为什么每次调用glMatrixMode后都必须调用glLoadIdentity()。
答案 0 :(得分:14)
When to call glMatrixMode() - 第一个答案试图解释:
glLoadIdentity()通常在矩阵模式更改后立即调用,因此如果您愿意,您将开始“新鲜”。 Matrix变换,例如gluPerspective(),glOrtho(),glFrustum(),glRotate(),glMultMatrix(),glTranslate()是累积操作,因为它们聚合以允许您描述复杂的3D世界空间变换或描述您的OpenGL查看体积。示例:如果我想要一个沿+ X方向平移的立方体然后围绕Z轴旋转我发出一个glRotate()后跟一个glTranslate()。
glLoadIdentity()使用单位矩阵消除矩阵(当前矩阵模式的矩阵),因此glLoadIdentity()跟随gluPerspective()等同于对glLoadIdentity()的单个调用。换句话说,那个序列是荒谬的。