【OpenGL编程指南】之视图和模型变换
来源:互联网 发布:德勤财务咨询 知乎 编辑:程序博客网 时间:2024/05/29 12:29
照相机比喻
- 视图变换——确定照相机位置;
- 模型变换——安排场景,确定物体位置;
- 投影变换——选择照相机镜头,调整放大倍数;
- 视口变换——确定照片的大小;
通用变换函数
void glMatrixMode(GLenum mode); 指定模型视图、投影或纹理矩阵是否将被修改,值可以为GL_MODELVIEW,GL_PROJECTION或GL_TEXTURE;
void glLoadIdentiy(void); 加载单位矩阵,用于清除当前矩阵,将其归零;
void glLoadMatrix(cont Type *m); 将当前矩阵的16个值设置为m指定的值;
void glMultMatrix(const Type *m); 与当前矩阵相乘;
矩阵乘法要注意是使用行主序还是列主序,若使用行主序,则调用glLoadTransposeMatrix()和glMultTransposeMatrix()方法。
模型变换
所有视图变换和模型变换都是用一个4*4矩阵表示的,不同的变换顺序其结果差异很大,如下图所示,先旋转和先矩阵差异很大。
在实际编码时,一定要注意矩阵相乘的顺序和实际变换的顺序正好相反。
移动
void glTranslate{fd} (TYPE x, TYPE y, TYPE z); 很简单,不再细述。
旋转
void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z);
glRotatef(45.0, 0.0, 0.0, 1.0)的效果相当于沿Z轴旋转45度。
缩放
void glScale{fd}(TYPE x, TYPE y, TYPE z); 由x,y,z因子拉伸,收缩和反射。下图显示了glScalef(2.0, -0.5, 1.0)的效果。
视图变换
视图变换用于修改观察点的位置和方向,一般由移动和旋转组成,视图变换函数必须在调用任何模型变换之前被调用,以确保模型变换首先作用于物体。
使用移动和旋转
当使用模型变换函数模拟视图变换时,其做法相当于在场景中的物体保持静止的前提下按照预想的方式移动观察点。
使用gluLookAt
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble ceterx, GLdouble certery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz); 观察点由eye指定的,center指定了视线上的任意一点,up表示哪个方向是朝上的。
- 【OpenGL编程指南】之视图和模型变换
- OpenGL模型变换和视图变换
- OpenGL编程指南8:模型组合变换
- OpenGL模型视图变换
- OpenGL模型视图变换
- OpenGL的视图和模型变换
- OpenGL编程指南-顶点数组、视图变换、投影变换
- 详解OpenGL中的各种变换(投影变换,模型变换,视图变换)(一)——模型变换和视图变换
- OpenGL: 模型视图矩阵变换
- OpenGL(五) 三维变换之模型视图矩阵
- openGL学习笔记2——视图和模型变换
- 模型变换和视图变换
- 模型变换和视图变换
- OpenGl学习笔记3之模型变换、视图变换、投影变换、视口变换介绍
- 【OpenGL】OpenGL视图和模型变换中各变换发生顺序的思考
- OPENGL 变换视图模型变换与部分透视变换
- 《OpenGL编程指南》学习之各种变换函数的理解
- OpenGL 视图变换和投影变换
- Android如何自定义视图属性总结
- ImageView的属性android:scaleType作用
- UIButton无响应问题详细记录
- iOS开发--毛玻璃效果,图片模糊效果
- 飞机大战开发01之添加主逻辑层,显示背景的移动
- 【OpenGL编程指南】之视图和模型变换
- [XML]sax中DefaultHander解析xml过程和先后顺序
- 2-5-2 对象作为数据成员
- 常用知识总结——模板Template
- 最近学习的感悟
- 深度学习介绍(六)趣闻
- Android 调用WebService 查手机号的应用
- UVA - 10635 Prince and Princess
- 项目三:用多文件组织多个类的程序