我正在使用带有gluPerspective的OpenGL,我需要做些什么来使它使用一个原点在左上方而不是左下方的轴系统?
答案 0 :(得分:2)
我认为直接操作投影矩阵对于此操作来说是一种干净的方式。但如果你有任何机会需要替代方案:
您可以使用glScalef(1.f, -1.f, 1.f)
翻转轴。
这也只是对GL_MODELVIEW或GL_PROJECTION矩阵的操作(无论当前是否有效)。
答案 1 :(得分:1)
您可以通过翻转投影矩阵的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
),但这种方式更容易逆转(只需拨打glPopMatrix
稍后在GL_PROJECTION
堆栈上)。
您也可以使用相同的技术翻转任何其他轴;只需在适当的位置放置减号。