0

因此,我正在使用 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 );
4

0 回答 0