关于模型视图变换的一些理解

OpenGL可以通过glMatrixMode(GL_MODELVIEW)来修改模型视图矩阵的值。模型视图矩阵包含模型变换和视图变换,在OpenGL中经常将这两种变换混在一起进行讨论,这是因为我们关注的其实就是相机和物体之间的相对位置关系,这个相对位置可以通过变换相机或者通过变换物体来实现。
通过之前阅读OpenGL红宝书,可以改变模型变换的指令有glTranslate*()和glRotate*(),可以改变视图变换的矩阵有gluLookAt()。但之前通过gluLookAt()改变相机的朝向,然后将物体画到朝向相机的位置时总是得不到正确的结果。这个问题可以这样理解:将模型视图变换统一理解成一个相对位置变换关系而不是分为相机的变换和模型的变换,则我们可以将gluLookAt()也理解成对模型进行变换,所以下面在对模型进行变换的时候中间就不能调用glLoadIdentity(),否则相当于gluLookAt()这个变换没有起作用。还有一点需要注意的是,由于把gluLookAt()也理解成了模型变换,并且应该是最先调用的变换(视图变换函数必须在调用任何模型变换函数之前调用),所以它的前面应该加上glLoadIdentity(),以确保窗口的稳定。

感谢在这个过程中小P同学的帮助~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值