文档介绍:android3D游戏开发教程
之所以会推出OpenGL-ES版本,主要是应对嵌入式环境和应用的要求。
嵌入式设备一般工作于较恶劣的环境,包括:温度、湿度、振动、冲击、酸碱腐蚀等。例如:中国的酸雨气候就给很多室外电子设备带来了新的难:设置顶点数据
glDrawArrays:绘制函数
GL_VERTEX_ARRAY:顶点数组
GL_BYTE/GL_SHORT/GL_FIXED/GL_FLOAT:顶点数据的类型
GL_LINES:线
GL_TRIANGLES:三角形
GL_TRIANGLE_STRIP:三角形带
2D多边形
19
OpenGL ES只支持RGBA颜色模式,即我们通过定义红,绿,蓝以及alpha元素来定义颜色, alpha值定义了颜色之后物体的***(明)程度。
颜色数组
和顶点数组一样,由每一个顶点的颜色数据组成。
着色模式
在OpenGL ES中,我们可以为整体物体设计一个单一的颜色,称之为“单一着色”; 也可以用多种颜色混合渲染,而颜色之间过渡很平滑,称之为“平滑着色”。
颜色
20
常用函数及常量
glColor4f:设置单一颜色
glColorPointer:设置颜色数组
GL_COLOR_ARRAY:颜色数组(通过状态开关函数glDisableClientState 来操作)
GL_COLOR_BUFFER_BIT:颜色缓存
颜色
21
OpenGL ES有三种不同类型的变换,它们分别是:
转移(Translate):在3D空间中移动物体
旋转(Rotate):绕X, Y, 或者 Z 轴进行旋转
缩放(Scale):改变物体的大小
变换
22
常用函数及常量
glTranslatef:平移
glRotatef:旋转
glScalef:缩放
变换
23
小结
24
思考?
如何绘制3D图形呢?比如:立方体。
在3D空间中,当多个相同物体在同一直线上时,前面的物体是否要遮挡后面的物体呢?如何才能让观察者看得更逼真呢?
作业
25
课程目标
绘制函数:glDrawElements
索引数组
通过glDrawElements来绘制一系列的三角形
设置视口
***
正交
26
索引数组
我们在绘制一个复杂的物体时,可以使用glDrawElements方法通过一组特殊的数据来绘制一系列的三角形,从而构成复杂的物体,那么这一组特殊的数据需要对应顶点数组中每一个数据的索引号,我们就把这组特殊的数据称之为“索引数组”。
3D图形绘制
27
glDrawElements(int mode, int count, int type, Buffer indices)
mode:绘制图形的模式(三角形)
count:顶点数目
type:索引数组的数据类型
indices:索引数组
3D图形的绘制
28
设置视口
正交和***
OpenGL ES中具有的两种不同的视口类型:正交和***。为更好地理解,我们先看看铁路轨道,铁路的两条铁轨之间具有固定的距离。其固定的距离是由铁轨根据承载什么样的火车而决定。
29
***
OpenGL可以设定的视口中的一种就是使用***(perspective)。当你这样设置视口时,物体会随着移远而越来越小,视线会在物体移离观察者时最终交汇。这是对真实视觉的模拟;人们就是以这种方式观察世界的。
正交
另一种设置视口称为正交(orthogonal) 视口。这种类型的视口,视线永远不会交汇而且物体不会改变其大小。所以看上去是不真实的,通常也不是你所希望的。
设置视口
30
glFrustumf(
-ratio,
ratio,
-1,
1,
,
)
***视口
31
glOrthof(
-ratio,
ratio,
-1,
1,
,
)
正交视口
32
小结
33
思考?
在OpenGL ES中如何为物体添加和设置光效。
作业
34
阴影模型
GL_FLAT(恒定)、 GL_SMOOTH(光滑)
光效三要素
环境元素(ambient component)
散射元素(diffuse component)
高光元素(specular component)
光源的属性
位置、方向、角度
顶点法线
课程目标
35
GL_FLAT将指定三角形上的每个像素都同等对待。多边形上的每个像素都具有相同的颜色,阴影等。在这种方式下,物体看上去极为不真实。
GL_SMOOTH模式,它使用了一种平滑快速的阴影算法,称为Gouraud算法。OpenGL ES默认为GL_SMOOTH模式。
阴影模型
36