glPushMatrix 和glPopMatrix图解 ----求别笑

这篇博客探讨了在OpenGL中使用glPushMatrix和glPopMatrix时的误解和正确理解。通常,开发者会先用glLoadIdentity()设置单位矩阵,然后通过glPushMatrix()保存当前矩阵并使用glPopMatrix()恢复。然而,作者发现之前的猜想是错误的,实际上每个矩阵模式都有自己的栈,glPushMatrix会复制并压入栈,而glPopMatrix则弹出栈顶矩阵作为当前矩阵。栈初始化时包含一个单位矩阵。

猜想:

openGL在绘制场景时的一般用法是:

首先在函数的开始处用glLoadIdentity()设置当前的矩阵为单位矩阵。

然后在函数中用glPushMatrix()和glPopMatrix()函数进行操作:

 

根据实践判断:

即这两者是分开的,并不是当前矩阵就是栈中的最上端的矩阵。

当一开始进行glLoadIdentity时,在栈中并没有保存任何矩阵,只是将当前矩阵设置为单位矩阵;

当在程序中使用glPushMatrix 时,将当前的矩阵压入栈中

当在程序中使用glPopMatrix时,将栈中栈顶的矩阵取出放在当前矩阵中

 

以上猜想是错误的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

教训:没有直接看人家给的API说明文档。。。。

 

实际是这样的:

There is a stack of matrices for each ofthe matrix modes. In GL_MODELVIEW mode, the stack depth is at least 32.In the other two modes,GL_PROJECTION and GL_TEXTURE, the depthis at least 2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值