读书人

opengl中pushmatrix(),popmatrix()前后

发布时间: 2013-07-09 09:50:47 作者: rapoo

opengl中pushmatrix(),popmatrix()前后问题
今天看了一段nehe的代码
发现如下
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0,800,0,600,-1,1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();glLoadIdentity();
。。。
。。。
。。。
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
为什么先压的PROJECTION矩阵却要先POP PROJECTION矩阵呢?栈不是先入后出吗?我把最后modelview和projection调换位置后确实出现绘图错误,也就是这段代码肯定正确。求问? OpenGL 栈 pushmatrix popmatrix
[解决办法]

引用:
看改成下面的顺序是不是一样

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0,800,0,600,-1,1);
glPopMatrix();

glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glPopMatrix();


GL_PROJECTION 和 GL_MODELVIEW 代码处理上是不相干的,当然逻辑上是一体的

下面的顺也应该是没问题的
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();

读书人网 >VC/MFC

热点推荐