在resize()中使用glMatrixMode(GL_MODELVIEW)有什么用?

时间:2014-06-09 10:43:35

标签: c++ opengl graphics

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() ;

}

当我们改变窗口大小时,

视口和投影矩阵被调整大小,但是在调整大小函数里面调用GL_MODELVIEW有什么用。

1 个答案:

答案 0 :(得分:1)

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

给定代码将当前矩阵类型设置为投影,修改它,然后将当前矩阵设置为modelview,以便后续代码(在此函数之外)将修改模型视图而不是投影,并将其重置为单位矩阵(这可能是不必要的,具体取决于关于绘制功能)。