openGL大小调整保持纵横比,但也可以缩放对象

时间:2013-01-29 14:36:48

标签: opengl resize clipping aspect-ratio

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

0 个答案:

没有答案