OpenGL和矩阵

      OpenGL中的变换是依靠矩阵来完成所有数学计算的。OpenGL中有一种叫矩阵堆栈的东西,对于构建由很多简单物体组成的复杂模型是很有用的。

      OpenGL中的矩阵堆栈提供了这样一个功能:用户能够相对于物体B的局部坐标原点移动物体A,以物体A的局部坐标绘制A,最后再撤销整个变换,以使得当前位置再次回到B物体的局部坐标原点。两个堆栈操作glPushMatrix()和glPopMatrix()就可实现这样的功能。

      glPushMatrix()函数将当前矩阵压入堆栈。

      glPopMatrix()函数弹出堆栈的栈顶矩阵,销毁其内容。

 

      上面这一段话怎么理解呢?我下面分析一下:

      假如要绘制两个物体A和物体B:

 

      (1)假如函数结构如下:

       glPushMatrix()

       坐标变换1

       绘制物体B

       坐标变换2

       绘制物体A

       glPopMatrix()

 

       假如函数结构如上,则“坐标变换2”是在“坐标变换1”的基础上进行变换的,当改变“坐标变换1”中的坐标时,“坐标变换2”的坐标也将会随之改变。这就可以实现诸如机器人手臂之类的功能。

 

 

       (2)假如函数结构如下:

        glPushMatrix()

       坐标变换1

       绘制物体B

       glPopMatrix()

       glPushMatrix()

       坐标变换2

       绘制物体A

       glPopMatrix()

 

       假如函数结构如上,则“坐标变换2”和“坐标变换1”无关,也就是说,当“坐标变换1”中的坐标变化时,“坐标变换2”的坐标不会随之改变。物体B和物体A都是在同一个坐标起点开始绘制的,它们之间的坐标不会相互影响。

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值