因此,我正在使用 openGL 和 C++ 开发一个简单的项目,现在我在屏幕上只绘制了一个白色圆圈。
我添加了一个功能来保持我正在使用的画布中的纵横比,它似乎可以完美地工作。
如果您水平调整窗口大小,则会发生剪辑(这就是我的意图)
但是,如果您垂直调整窗口大小,则不会发生剪切,而是对象按比例缩小/放大..
现在我被困在弄清楚如何保持正确的纵横比,同时还防止对象缩放,同时记住我稍后将实现平移和缩放。
考虑到这一点,这是我用来调整比率的代码。
请注意,glViewPort 在调整大小时也设置正确,但我只复制了这一部分,因为我知道问题出在此处。
if ( dx/dy < w/h ){
// Need to expand dx
GLdouble diff = w/h*dy - dx;
minX -= 0.5*diff;
maxX += 0.5*diff;
}
else{
// Need to shrink dx
GLdouble diff = h/w * dx - dy;
minX += 0.5*diff;
maxX -= 0.5*diff;
}
glOrtho( minX, maxX, minY, maxY, minZ, maxZ );