问题
I'm using OpenGL with gluPerspective, what would I need to do to make it use an axis-system which the origin is top left instead of bottom left?
回答1:
I would say direct operating on the projection matrix is a clean way for this operation. But if by any chance you need an alternative:
You can just use glScalef(1.f, -1.f, 1.f)
to flip the axis.
This is also just an operation on the GL_MODELVIEW or GL_PROJECTION matrix (whatever is currently active).
回答2:
You can do this by flipping the y
-axis of the projection matrix. So:
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
That ought to do it.
You could also use a glMultMatrix
call with the same matrix (instead of Push
and then Load
), but this way is more easily reversed (just call glPopMatrix
on the GL_PROJECTION
stack later).
You can also use the same technique to flip any of the other axes; just put minus signs in the appropriate locations.
来源:https://stackoverflow.com/questions/2866731/modifying-opengl-axis-system