OpenGL几何变换
来源:互联网 发布:淘宝女鞋正品 编辑:程序博客网 时间:2024/05/21 14:03
OpenGL几何变换
OpenGL中指定了顶点之后,但在屏幕上显示它们之前,会发生三种类型的变换:视图变换、模型变换和投影变换。OpenGL中一些变换术语如下表:
视图变换:用于确定场景的拍摄点,也就是在世界坐标系中确定Camera的过程,并将世界坐标系转换到Camera Space,观察方向直行z轴负方向。在进行任何其它变换之前必须先指定视图变换。
模型变换:用于对模型及模型内部的待定物体进行操纵,可以对物体进行平移、旋转、缩放。
模型视图对偶性:视图变换与模型变换的效果等同。
&esmp; 投影变换:投影变换指定了一个完成的场景投影到屏幕上的最终图像。常见的投影类型有:正投影与透视投影。
视口变换:将最终获得的二维图像映射到屏幕上的某个窗口。
顶点变换管线(管线用于描述一种过程,它可能涉及到两个或更多个独特的阶段和步骤):源顶点数据->模型视图矩阵->经过变换的视觉坐标->投影矩阵->裁剪坐标->透视除法->经过规范化的设备坐标->视口变换->窗口坐标。
相关的函数
//平移,(x, y, z)平移向量glTranslatef(x, y, z);//旋转,angle旋转角度,(x, y, z)旋转轴glRotatef(angle, x, y, z);//缩放,(x, y, z)沿各个坐标轴方向的缩放比例glScalef(x, y, z);//把当前的矩阵设置为模型视图矩阵,并加载单位矩阵进行重置glMatrixMode(GL_MODELVIEW);glLoadIdentity();//矩阵堆栈glGet(GL_MAX_MODELVIEW_STACK_DEPTH);//模型矩阵堆栈的最大深度glGet(GL_MAX_PROJECTION_STACK_DEPTH);//投影矩阵堆栈的最大深度glPushMatrix();//压入矩阵堆栈glPopMatrix();弹出矩阵堆栈//透视变换gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble aNear, GLdouble aFar);//fovy:垂直方向的视野角度//aspect:宽度与高度的纵横比//aNear,aFar:近端和远端裁剪平面之间的距离//加载矩阵glLoadMatrixf(const GLfloat *matrix);//列主序加载矩阵glLoadTransposeMatrixf(const GLfloat *matrix);//行主序加载矩阵
OpenGL的矩阵顺序为列主序的,即按列逐个遍历矩阵中的元素,如下:
列主序的矩阵顺序: [I0, I4, I8, I12] [I1, I5, I9, I13] [I2, I6, I10, I14] [I3, I7, I11, I15]
注意:OpenGL中常采用一维数组来组织二维矩阵,GLfloat matrix[16]。若采用二维数组表示二维矩阵,则矩阵数据在内存中是以行主序存储的。
参考资料
1. OpenGL SuperBible
2. View Transform
0 0
- OpenGL几何变换
- OpenGL三角形几何变换
- OpenGL几何变换详解
- OpenGL的几何变换
- OpenGL开发 几何变换:管线
- perl-opengl几何变换函数
- perl-opengl几何变换函数
- OpenGL: 用户自定义几何变换
- 实验3 OpenGL几何变换
- OpenGL ES几何变换和坐标变换
- OpenGL ES几何变换和坐标变换
- OpenGL图形变换——几何变换(世界变换)
- 我对 OpenGL 几何变换的理解
- OpenGL学习——二维几何变换
- OpenGL学习08_几何变换
- OpenGL的几何变换-纹理贴图
- OpenGL学习08_几何变换
- 4.4.2 OpenGL几何变换编程实例
- HDU 1015 Safecracker
- leetcode283 : Move Zeroes
- 地图的使用(定位)
- 如果要查找%'或'_',则需要使用关键字ESCAPE定义一个转义符号
- MVC3 Html.DropDownList使用方法总结
- OpenGL几何变换
- C++ Primer 学习笔记与思考_11 try..catch语句及相关疑点
- S-functions
- 折腾CentOS--让linux启动后自动进入图形界面或文本界面
- 死锁
- Log4j的基本使用
- 网络层其它协议,转载自实验楼
- HDU 3374 String Problem(最大最小表示法 模板题)
- 自定义控件