问题与gluOrtho2D()

我试图了解gluOrtho2D函数。 我画了四条线,从中心到达屏幕的四个角落。

你可以按照下面的代码。 osize是一个用来设置gluOrtho2D参数的gluOrtho2D 。 它将创建一个大小为2*osize的窗口。

如果osize为1时工作正常。线条到达角落。 但随着我增加osize的价值,线的长度减less(交叉变小,不覆盖整个屏幕)。 但我认为它应该到达角落。

 void display() { glClear( GL_COLOR_BUFFER_BIT ); //glViewport(0, 0, 100, 100); glMatrixMode (GL_PROJECTION); float osize = 1.2; //glOrtho(-osize*1.0, osize*1.0, osize*1.0, -osize*1.0, -1.0, 1.0); gluOrtho2D(-osize*1.0, osize*1.0, osize*1.0, -osize*1.0); glMatrixMode (GL_MODELVIEW); glBegin(GL_LINES); glColor3f(0.0, 0.0, 1.0); glVertex2f(0.0, 0.0); glVertex2f(-osize*1.0, -osize*1.0); glVertex2f(0.0, 0.0); glVertex2f(-osize*1.0, osize*1.0); glVertex2f(0.0, 0.0); glVertex2f(osize*1.0, -osize*1.0); glVertex2f(0.0, 0.0); glVertex2f(osize*1.0, osize*1.0); glEnd(); glutSwapBuffers(); //includes glFlush(); } 

问题是什么?

也许你倒顶了? Orthomatrix将Y缩放2 /(上 – 下),在你的情况下一个负数。