我正在使用OpenGL和gluPerspective,如果要将坐标系原点从左下角改为左上角,需要进行哪些操作?
我认为直接操作投影矩阵是这个操作的一种干净方法。但如果你需要另一种选择:
你可以使用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
调用的作用,它将现有矩阵推入堆栈中,保留现有变换。新矩阵与先前的矩阵组合在一起,而不是替换它。 - tzaman