谁能告诉我这段代码中if-else语句的意义是什么?它到底是做什么的?
尤其是在glOrtho中将宽度除以高的部分。

*如果该方法对任何人都模​​棱两可,则此引用可能会有所帮助。
“此重塑通过使视口和世界窗口具有相同的宽高比来保留形状”

void myReshape(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (w <= h)
        glOrtho(-50.0, 50.0, -50.0*(GLfloat)h / (GLfloat)w,
            50.0*(GLfloat)h / (GLfloat)w, -1.0, 1.0);
    else
        glOrtho(-50.0*(GLfloat)w / (GLfloat)h,
            50.0*(GLfloat)w / (GLfloat)h, -50.0, 50.0, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

}


提前感谢!

最佳答案

本质上,这个想法是使投影保持正方形的长宽比(这是wh的除法),并且在XY平面中以所选的XY原点为边长为100(世界空间单位)的正方形(0,0)适合窗口的短尺寸(这是if的作用,用于确定窗口的两种尺寸中的哪一个是短尺寸)。

10-07 18:48