如何将平面设计为在任何窗口大小的视口中心

How to design a plane to be in the center of the viewport at any window size

本文关键字:窗口大小 视口 任何 平面设计      更新时间:2023-10-16

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

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

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

此外,我正在使用gluPerspective

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

在此之后,只要您将LoadIdentity()gl加载到模型视图矩阵中,就应该能够使用在屏幕中心绘制一个四边形

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渲染状态,如深度测试、着色等。很可能你会想关闭它。