反转y轴,并在OpenGL中设置坐标系

Joh*_*han 8 c++ opengl coordinates

在OpenGL中,我试图反转y轴,并设置一个特定类型的坐标系,就像Allegro一样.假设我的窗口是640x480,我希望屏幕的左上角是轴(0,0),右下角是(640,480).到目前为止,我设法获得了我想要的正确坐标系,但我不知道它是否以正确的方式完成.至于翻转y轴,我无法在不修改我当前拥有的坐标系的情况下将其反转.我不希望只有翻转1个形状的东西.我想让它在保持坐标系的同时翻转我在y轴上制作的所有未来形状.这是我到目前为止所拥有的.

初始化:

const GLdouble XSize = 640, YSize = 480;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, XSize, YSize, 0, 1, 1000);
glMatrixMode(GL_MODELVIEW);
Run Code Online (Sandbox Code Playgroud)

渲染:

float size = 30;

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0, 0, -500);

glPushMatrix();
glTranslatef(size, size, 0.0f);

glBegin(GL_TRIANGLES);
glColor3f(0.1, 0.3, 0.8);
glVertex3f( 0.0f, size, 0.0f);
glVertex3f(-size,-size, 0.0f);
glVertex3f( size,-size, 0.0f);
glEnd();
glPopMatrix();
Run Code Online (Sandbox Code Playgroud)

编辑:

我想出了添加glScalef(1,-1,1); 将翻转我的形状,但我必须将它包含在我的形状的glPushMatrix()中,我不知道这是否是正确的方法,或者它是一个hackish解决方案.

hol*_*olt 1

在这种情况下,你最好调整投影(将其视为“相机”)。

在这里查看 tzaman 的答案:修改 OpenGL 轴系统