开发者

Modifying OpenGL axis system

开发者 https://www.devze.com 2022-12-30 17:00 出处:网络
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 le开发者_C百科ft?I would say direct operating on the project

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 le开发者_C百科ft?


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).


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消