所以我正在开发一个简单的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 );