static void resize(int width, int height)
{
   const float ar = (float) width / (float) height;

    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity() ;


}

当我们更改窗口大小时,视口和投影矩阵会被调整大小,但是在resize函数内部调用GL_MODELVIEW有什么用。

最佳答案

glMatrixMode设置当前矩阵类型。所有使用当前矩阵的矩阵修改操作(glLoadIdentityglLoadMatrixglTranslatef,...)。

给定代码将当前矩阵类型设置为投影,对其进行修改,然后将当前矩阵类型设置为modelview,因此后续代码(此函数之外)将修改modelview而不是投影,并将其重置为恒等矩阵(这可能是不必要的,具体取决于绘画函数) )。

关于c++ - resize()中的glMatrixMode(GL_MODELVIEW)有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24118565/

10-10 16:18