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
设置当前矩阵类型。所有使用当前矩阵的矩阵修改操作(glLoadIdentity
,glLoadMatrix
,glTranslatef
,...)。
给定代码将当前矩阵类型设置为投影,对其进行修改,然后将当前矩阵类型设置为modelview,因此后续代码(此函数之外)将修改modelview而不是投影,并将其重置为恒等矩阵(这可能是不必要的,具体取决于绘画函数) )。
关于c++ - resize()中的glMatrixMode(GL_MODELVIEW)有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24118565/