OpenGL笔记:四. 视图变换
来源:互联网 发布:ccs软件功能 编辑:程序博客网 时间:2024/05/17 01:49
View
摘要:对于OpenGL初学者来说,往往会遇到视角不对,或者观察不到要绘制得图形。这些问题都是由于对OpenGL视图变换不理解造成的,只有完全理解了OpenGL的视图变换才能进一步学习OpenGL,否者你会处处遇到问题而不知其原因。
1. Introduction
这一部分内容是OpenGL中最难理解,也是最重要的一章。对于初学者来说,经常会遇到,运行程序的时候看不到任何东西,其中可能的原因是你没有把物体放入一个合适的观察点。也就是说,物体存在,但是你看不到。
2. 视图变换, 模型变换
必须先把glMatrixMode() 设为: GL_MODEVIEW, 然后,用glLoadIdentity() 置为单位阵。
在全局固定坐标系中, 变换矩阵的相乘顺序与它们在代码中的顺序相反。
如: A * ( B* (C * V) ): A, B, C 与V相乘的顺序为C,B,A
为了解决此问题,采用局部坐标系。
原理:在全局坐标系中设置一个局部坐标系coord, 移动物体obj时,coord随着obj一起移动, 之后的操作在局部坐标系coord内进行。
(1)模型变换——作用于物体本身
移动:glTranslate*(),
旋转:glRotate*(),
伸缩:glScale*()(2)视图变换 —— 作用于观察点
gluLookat( x1,y1,z1, x2,y2,z2, upx, upy, upz )(x1,y1,z1) : eye
( x2,y2,z2): 参考点——视线上的一点。
(upx, upy, upz):观察方向,这个不好理解,做好是自己动手试试。
3. 投影变换
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
(1) glFrustum( left, right, bottom, top, near, far );
(2) glOrtho(left, right, bottom, top, near, far)
left表示视景体左面的坐标,right表示右面的坐标,bottom表示下面的,top表示上面的。
glOrtho是创建一个正交平行的视景体。 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。比如,常用的工程中的制图等。需要比较精确的显示。 而作为它的对立情况, glFrustum则产生一个透视投影。这是一种模拟真是生活中,人们视野观测物体的真实情况。例如:观察两条平行的火车到,在过了很远之后,这两条铁轨是会相交于一处的。还有,离眼睛近的物体看起来大一些,远的物体看起来小一些。
(3) glPerspective( a, w/h, near, far )
4. 视口变换
(1)视口定义
glViewPort(x, y, w, h);
(2)glDepthRange( near, far );
5. 矩阵操作
对当前矩阵(栈顶矩阵)的操作:
glLoadMatrix();
glLoadTransposeMatrix();
glMultMatrix();
glMultTransposeMatrix();
glLoadIdentity();
对堆栈的操作:
glPushMatrix();
glPopMatrix();
- OpenGL笔记:四. 视图变换
- 图形学学习笔记]OpenGL视图矩阵变换
- OpenGL视图变换
- OpenGL的视图变换
- OpenGL模型视图变换
- opengl中的视图变换
- OpenGL的视图变换
- OpenGL模型视图变换
- openGL学习笔记2——视图和模型变换
- OPENGL 变换_视图模型变换与部分透视变换_学习笔记
- OpenGl学习笔记3之模型变换、视图变换、投影变换、视口变换介绍
- OpenGL: 模型视图矩阵变换
- OpenGL 视图变换和投影变换
- Opengl 坐标转换\视图变换
- OpenGL模型变换和视图变换
- OpenGL取景变换(视图变换)矩阵推导
- Android OpenGL ES绘图教程之四 :投影和相机视图变换
- opengl编程指南笔记(四)第三章 视图
- OpenGL笔记:三. 顶点数组和解引用
- 堆和栈的区别
- spring注解
- java中堆和栈的理解
- c/c++正则表达式
- OpenGL笔记:四. 视图变换
- 从错误中得知--关于字符串我以前没注意的东西
- hdu 2544(最短路)
- MyBatis学习(四)- 动态SQL
- 正则表达式之优先级
- vim的智能补全
- ubuntu 安装星际译王英汉词典
- isLowerCase、isUpperCase
- 简易计算器