【发布时间】:2010-05-19 15:05:25
【问题描述】:
我正在使用带有 gluPerspective 的 OpenGL,我需要做些什么才能使其使用原点位于左上角而不是左下角的轴系统?
【问题讨论】:
标签: opengl graphics 3d vertices
我正在使用带有 gluPerspective 的 OpenGL,我需要做些什么才能使其使用原点位于左上角而不是左下角的轴系统?
【问题讨论】:
标签: opengl graphics 3d vertices
我想说直接对投影矩阵进行操作是这种操作的一种干净的方式。但是,如果您有任何机会需要替代方案:
您可以只使用glScalef(1.f, -1.f, 1.f) 来翻转轴。
这也只是对 GL_MODELVIEW 或 GL_PROJECTION 矩阵的操作(无论当前处于活动状态)。
【讨论】:
您可以通过翻转投影矩阵的y 轴来做到这一点。所以:
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadMatrix( [1 0 0 0;
0 -1 0 0;
0 0 1 0;
0 0 0 1] );
// ^ pseudo-code, replace with actual matrix
应该这样做。
您也可以对相同的矩阵使用glMultMatrix 调用(而不是Push 然后Load),但这种方式更容易反转(只需稍后在GL_PROJECTION 堆栈上调用glPopMatrix) .
您也可以使用相同的技术来翻转任何其他轴;只需将减号放在适当的位置即可。
【讨论】:
glPushMatrix 调用的目的,它将现有矩阵向下推入堆栈,保留现有转换。新矩阵与前一个矩阵组成,它不会替换它。