关于模型视图变换的一些理解
2015-04-17 15:28
375 查看
OpenGL可以通过glMatrixMode(GL_MODELVIEW)来修改模型视图矩阵的值。模型视图矩阵包含模型变换和视图变换,在OpenGL中经常将这两种变换混在一起进行讨论,这是因为我们关注的其实就是相机和物体之间的相对位置关系,这个相对位置可以通过变换相机或者通过变换物体来实现。
通过之前阅读OpenGL红宝书,可以改变模型变换的指令有glTranslate*()和glRotate*(),可以改变视图变换的矩阵有gluLookAt()。但之前通过gluLookAt()改变相机的朝向,然后将物体画到朝向相机的位置时总是得不到正确的结果。这个问题可以这样理解:将模型视图变换统一理解成一个相对位置变换关系而不是分为相机的变换和模型的变换,则我们可以将gluLookAt()也理解成对模型进行变换,所以下面在对模型进行变换的时候中间就不能调用glLoadIdentity(),否则相当于gluLookAt()这个变换没有起作用。还有一点需要注意的是,由于把gluLookAt()也理解成了模型变换,并且应该是最先调用的变换(视图变换函数必须在调用任何模型变换函数之前调用),所以它的前面应该加上glLoadIdentity(),以确保窗口的稳定。
感谢在这个过程中小P同学的帮助~
通过之前阅读OpenGL红宝书,可以改变模型变换的指令有glTranslate*()和glRotate*(),可以改变视图变换的矩阵有gluLookAt()。但之前通过gluLookAt()改变相机的朝向,然后将物体画到朝向相机的位置时总是得不到正确的结果。这个问题可以这样理解:将模型视图变换统一理解成一个相对位置变换关系而不是分为相机的变换和模型的变换,则我们可以将gluLookAt()也理解成对模型进行变换,所以下面在对模型进行变换的时候中间就不能调用glLoadIdentity(),否则相当于gluLookAt()这个变换没有起作用。还有一点需要注意的是,由于把gluLookAt()也理解成了模型变换,并且应该是最先调用的变换(视图变换函数必须在调用任何模型变换函数之前调用),所以它的前面应该加上glLoadIdentity(),以确保窗口的稳定。
感谢在这个过程中小P同学的帮助~
相关文章推荐
- 关于OpenGL中模型视图投影视口变换的理解
- OpenGL中glMatrixMode()函数以及视图变换,模型变换,投影变换,视口变换的理解
- 关于对傅里叶变换的一些理解
- 关于对傅里叶变换的一些理解
- opengl 关于 投影变换,模型视图变换,视口变换 和多视口 的综合例子
- 【ThinkPHP】关于ThinkPHP关联模型和视图模型的一些心得 推荐
- .NET:关于数据模型、领域模型和视图模型的一些思考
- .NET:关于数据模型、领域模型和视图模型的一些思考
- 简单理解OpenGL模型视图变换
- 理解OpenGL中的模型视图矩阵变换
- 关于服务业革命的一些理解和看法
- 关于css定位的一些理解
- 关于NAT穿透的一些理解
- 关于结构体的一些理解
- 关于OPencv里仿射变化和透射变换的理解
- 关于PHP中协程和阻塞的一些理解与思考
- 关于android中dpi px dp sp 单位的一些理解
- 关于RunLoop的一些理解
- 关于vue.js v-bind 的一些理解和思考
- ASP.NET MVC教程:理解模型、视图和控制器(5)(完)