0

我需要在 OpenGL(c++,OS:windows)中绘制一个平面(使用 GL_QUADS),以便它与屏幕中心对齐。

我的意思是,在任何窗口调整大小时,原点都将位于平面的中心。

我知道我必须使用视口坐标和大小,但我无法配置如何使用它们。

另外,我正在使用gluPerspective.

4

2 回答 2

2

原点与您的窗口大小无关。当您调整窗口大小时,重新计算窗口的纵横比(window.width / window.height)并使用新的方面再次调用 gluPerspective 来重置您的投影矩阵。

在此之后,只要你 glLoadIdentity() 进入模型视图矩阵,你应该能够使用在屏幕中心绘制一个四边形

glBegin(GL_QUADS);
glVertex3f(-.5f,.5f,-1);
glVertex3f(-.5f,-.5f,-1);
glVertex3f(.5f,-.5f,-1);
glVertex3f(.5f,.5f,-1);
glEnd();

这应该在屏幕的中心放置一个单位大小的四边形。

于 2013-02-20T15:18:01.533 回答
1
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();

glBegin(GL_QUADS);
glVertex3f(-.5f,.5f,-1);
glVertex3f(-.5f,-.5f,-1);
glVertex3f(.5f,-.5f,-1);
glVertex3f(.5f,.5f,-1);
glEnd();

glPopMatrix();

请注意,这仍然使用您所有的 3D 渲染状态,例如深度测试、着色等。您很可能希望将其关闭。

于 2013-02-21T06:24:36.417 回答