4

我正在使用带有 gluPerspective 的 OpenGL,我需要做些什么才能使其使用原点位于左上角而不是左下角的轴系统?

4

2 回答 2

2

我想说直接对投影矩阵进行操作是这种操作的一种干净方式。但是,如果您有任何机会需要替代方案:

您可以只使用glScalef(1.f, -1.f, 1.f)来翻转轴。

这也只是对 GL_MODELVIEW 或 GL_PROJECTION 矩阵的操作(无论当前处于活动状态)。

于 2010-05-19T15:23:49.753 回答
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具有相同矩阵的调用(而不是Pushthen Load),但这种方式更容易反转(稍后glPopMatrixGL_PROJECTION堆栈上调用)。

您也可以使用相同的技术来翻转任何其他轴;只需将减号放在适当的位置即可。

于 2010-05-19T15:14:35.547 回答