【发布时间】:2012-04-17 02:37:29
【问题描述】:
我正在一个方形窗口中绘制一个多边形。当我调整窗口大小时,例如通过全屏显示,纵横比受到干扰。从参考资料中,我找到了一种保留纵横比的方法。代码如下:
void reshape (int width, int height) {
float cx, halfWidth = width*0.5f;
float aspect = (float)width/(float)height;
glViewport (0, 0, (GLsizei) width, (GLsizei) height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(cx-halfWidth*aspect, cx+halfWidth*aspect, bottom, top, zNear, zFar);
glMatrixMode (GL_MODELVIEW);
}
这里,cx 是 X 中 zNear 平面的眼睛空间中心。我请求是否有人可以解释我如何计算这个。我相信这应该是 glFrustum() 的前两个参数的平均值。我对吗?任何帮助将不胜感激。
【问题讨论】:
-
取决于您想要达到的目标。当前不保留方面的投影矩阵是什么?你使用过剩?
-
假设是通用的..glFrustum(左、右、下、上、近、远)。是的,使用 GLUT。