我需要在 OpenGL(c++,OS:windows)中绘制一个平面(使用 GL_QUADS),以便它与屏幕中心对齐。
我的意思是,在任何窗口调整大小时,原点都将位于平面的中心。
我知道我必须使用视口坐标和大小,但我无法配置如何使用它们。
另外,我正在使用gluPerspective
.
原点与您的窗口大小无关。当您调整窗口大小时,重新计算窗口的纵横比(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();
这应该在屏幕的中心放置一个单位大小的四边形。
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 渲染状态,例如深度测试、着色等。您很可能希望将其关闭。