Android OpenGL ES 投影矩阵的设置
来源:互联网 发布:昆明行知中学招聘 编辑:程序博客网 时间:2024/05/29 16:30
* 注 : 参考 :http://wiki.jikexueyuan.com/project/opengl-es-guide/projection.html
在之前的文章中,已介绍OpenGL的基本使用,本文开始,将进一步了解OpenGL
OpenGL投影矩阵
在之前的示例中,OpenGL初始化代码中有以下代码:
// Select the projection matrix gl.glMatrixMode(GL10.GL_PROJECTION); // Reset the projection matrix gl.glLoadIdentity();
该代码为设置当前 Matrix 模式为 Projection 投影矩阵
OpenGL ES 可以使用两种不同的投影变换:透视投影(Perspective Projection)和正侧投影(Orthographic Projection)。
透视投影(Perspective Projection)
透视投影的特点是“近大远小”,也就是我们眼睛日常看到的世界。OpenGL ES 定义透视投影的函数为 glFrustum():
public static void gluPerspective(GL10 gl, float fovy, float aspect, float zNear, float zFar)
视锥由(left,bottom,-near) 和(right,top,-near) 定义了靠近观测点的裁剪面,near 和far定义了观测点和两个创建面直接的近距离和远距离。
在实际写代码时,Android OpenGL ES提供了一个辅助方法gluPerspective()可以更简单的来定义一个透视投影变换:
public static void gluPerspective(GL10 gl, float fovy, float aspect, float zNear, float zFar)
- fovy: 定义视锥的 view angle.
- aspect: 定义视锥的宽高比。
- zNear: 定义裁剪面的近距离。
- zFar: 定义创建面的远距离。
注:所绘画内容,需在View volume中才可显示,利用Z轴平移,将内容移到View volume区中,如:
gl.glTranslatef( 0f,0f ,zNear);
正侧投影(Orthographic Projection)
正侧投影,它的视锥为一长方体,特点是物体的大小不随到观测点的距离而变化,投影后可以保持物体之间的距离和夹角。它主要用在工程制图上。
定义正侧投影(也称作平移投影)的函数为:
public void glOrthof(float left, float right,float bottom,float top,float near,float far)
裁剪
场景中的图形的顶点经过 modelview 和 projection 坐标变换后,所有处在 Viewing volumn之外的顶点都会被裁剪掉,透视投影和正侧投影都有6个裁剪面。所有处在裁剪面外部的顶点都需剪裁掉以提高绘图性能。
注: 在前面例子中,没有设置透视投影或正侧投影,其默认为正侧投影,并使之满屏,宽高各为1
- Android OpenGL ES 投影矩阵的设置
- opengl es 透视投影矩阵推导
- Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵
- OpenGL中视口、投影矩阵、视点的设置顺序
- OpenGL投影矩阵的构造
- opengl 投影矩阵的理解
- OpenGL投影矩阵的推导
- 投影矩阵的推导(OpenGl)
- OpenGL 投影矩阵的推导
- OpenGL 投影矩阵的推导
- 【Android应用开发】 OpenGL ES -- 透视投影 和 正交投影
- 【Android应用开发】 OpenGL ES -- 透视投影 和 正交投影
- OpenGL ES 正交投影
- OpenGL ES 透视投影
- OpenGL ES之glFrustumf设置投影视角详解
- OpenGL ES之glFrustumf设置投影视角详解
- OpenGL ES之glFrustumf设置投影视角详解
- Android OpenGL ES(十四):通用的矩阵变换指令
- QML与C++交换数据
- FastDFS文件集群服务器搭建
- python 在Windows 下切换工作目录
- LeetCode Algorithms #1 Two Sum
- 正则表达式:检测密码由6-21字母和数字组成
- Android OpenGL ES 投影矩阵的设置
- [笔记分享] [Git] progit学习笔记之分支
- 决策树原理
- html高德地图ip定位之后拖动自定义定位地址
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- DHCP报文
- JAVA面试题---用java程序遍历二叉树(递归与非递归)
- 第二十四篇:JAVA代理
- 简明Linux命令行笔记:bzip2