正文  图形图像 > OpenGL/3D >

android 3D游戏开发

1.3d场景中的 3d模型的最基本单位是称为顶点的vertex2.openGL支持多种多边形 openGL es目前只支持三角形 主要是出于性能的原因,任何多边形都可以拆分成多个三角形在openGL中一个长方体可以通过12个三角形来......

1.3d场景中的 3d模型的最基本单位是称为顶点的vertex

2.openGL支持多种多边形 openGL es目前只支持三角形 主要是出于性能的原因,任何多边形都可以拆分成多个三角形

在openGL中一个长方体可以通过12个三角形来搭建

3.openGL采用三维笛卡尔坐标系 x y z 一个顶点数组是包括场景中不分或者所有顶点坐标数据的简单数组 例如场景中有n个顶点

则坐标值有3n个 则顶点数组的尺寸有3n。

4.背面剪裁 视角在一个三角形的背面是不渲染此三角形 既看不到此三角形 大大提升渲染效率

5.三角形的正反面 当面对一个三角形 顶点逆时针顺序---正面 反之 反面

6.场景渲染器 SenceRenderer

7.不同的绘制方式

gl.glDrawElements( //绘制图形

GL10.GL_TRANGLES, //填充模式,这里是以三角形方式填充

iCount,//顶点数量

GL10.GL_UNSIGNED_BYTE, //索引值的类型

myIndexBuffer//索引值数据

);

GL_POINTS--把每个点作为一个点进行处理,索引数组中的第n个顶点既定义了点n,共绘制n个点

GL_LINES--把每两个点作为独立的线段面 2n和2n+1 定义了第n条线段 总共绘制了n/2个线段 n为奇数 忽略最后一个点 (独立的)

GL_LINES_STRIF-- 相互依次相连接 从第0个顶点到最后一个顶点 总绘制N-1个线段

GL_LINE_LOOP-- 在GL_LINES_STRIF基础上 把第最后的点和第0个点连接起来组成回路 总绘制线段N个

GL_TRANGLES -- 索引数组中每三个顶点作为一个独立的三角形 索引数组中第3n 3n+1 3n+2顶点定义了第n个三角形 总共绘制n/3个三角形 (独立的)

GL_TRANGLES_STRIP -- 绘制一组相邻的三角形 对于索引数组的第n个点 规则:

若n为奇数 第n+1 ,n和 n+2顶点定义了第n 个三角形

若n为偶数 第n,n+1和n+2 顶点定义了第n个三角形

总共绘制n-2个三角形

GL_TRANGLES_FAN -- 绘制一组相连的三角形 规则:从0点与n+1与n+2定义了一个三角形 总共绘制n-2个三角形(扇形)

8.使用索引法绘制图像 : 就是在建立顶点缓冲后 通过索引缓冲中的索引去任意调用顶点缓冲中的对应顶点来排列顶点顺序,

从而绘制各个位置上面的 点来达到绘制图形的目的

9.openGL ES 绘制前的准备工作

1. 清楚颜色缓存与深度缓存

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT );

缓存类型:颜色缓存、深度缓存、模板缓存、累计缓存

2.加载单位变换矩阵

gl.glMatrixMode(GL10.GL_MODELVIEW);

gl.glLoadIdentity();

此工作将会清楚虚拟世界中的一切平移、旋转、缩放或者其他变化, 并将观察者至于原点