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

时间:2013-02-20 12:36:48

标签: c++ opengl

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

我的意思是在任何窗口调整大小时原点将位于飞机的中心。

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

另外,我正在使用gluPerspective

2 个答案:

答案 0 :(得分: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();

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

答案 1 :(得分: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渲染状态,例如深度测试,阴影等。很可能您会想要将其关闭。