《android 3d游戏开发教程终极版》由会员分享,可在线阅读,更多相关《android 3d游戏开发教程终极版(13页珍藏版)》请在金锄头文库上搜索。
1、androidandroid 3D3D 游戏开发教程终极版游戏开发教程终极版ppt 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。Android OpenGL ES 开发主讲人:杨丰盛华章培训网、华章培训网版权所有课程目标Android 书籍 Android 应用开发书籍推荐 技术支持(交流平台)课程计划 课程概述 功能演示 课程需求分析华章培训第 2 页Android 书籍推荐Android 应用开发揭秘 Android 应用开发揭秘 应用开发揭秘国内首本基于 Andriod2.0 的经典著作 5 大专业社区一致鼎力推荐! 入围 51CTO2009 年度
2、 最受读者喜爱的原创 IT 技术图书奖。华章培训第 3 页交流平台华章培训网 http:/ 博客 http:/ 4 页课程计划ES 开发基础 Android OpenGL ES 开发基础 2:Opengl ES 概述 3:基本图形绘制 4:3D 图形绘制及透视 5:光效 6:材质 7:纹理及纹理映射 8:隧道实例 9:雾气 10:2D 文字显示 11:飘动的旗帜 12:蒙板华章培训13:离子系统 14:变形 16:曲面映射 17:多重纹理 18:反射-蒙板缓存 19:图像字体 20:反走样 21:缓存及片元测试 22:贝塞尔曲面 23:BLT 函数24:TGA 文件 25:多重视口 27:射线
3、拾取 28:地形 29:天空盒 30:帧动画 31:骨骼动画 32:碰撞检测 引擎实现(通过 NDK 来开 发原生 OpenGL ES 程序)15:多级纹理-二次几何体 26:轨迹球第 5 页课程准备构建 Android SDK 应用程序开发环境 Eclipse(3.4 及其以上版本) Android SDK(1.5 以上) ADT(0.9 以上)华章培训第 6 页OpenGL ES 概述主讲人:杨丰盛华章培训网、华章培训网版权所有课程目标ES 概述 OpenGL ES 概述OpenGL 与 OpenGL ES 概述 OpenGL 与 OpenGL ES 区别OpenGL ES 开发框架 ES
4、 开发 开发框架GLSurfaceView Renderer华章培训第 8 页OpenGL 概述OpenGL是由 SGI 公司开发的一套 3D 图形软件接口标准,由于具有体系 结构简单合理、使用方便、与操作平台无关等优点,OpenGL 迅速成 为一种 3D 图形接口的工业标准,并陆续在各种平台上得以实现。作为 一个性能优越的图形应用程序设计界面(API)而适合于广泛的计算 环境,从个人计算机到工作站和超级计算机,OpenGL 都能实现高性 能的三维图形功能。由于许多在计算机界具有领导地位的计算机公司 纷纷采用 OpenGL 作为三维图形应用程序设计界面,OpenGL 应用程序 具有广泛的移植性
5、。因此,OpenGL 已成为目前的三维图形开发标准 ,是从事三维图形开发工作的技术人员所必须掌握的开发工具。 (http:/www.opengl.org/)华章培训 第 9 页OpenGL ES 概述OpenGL ESOpenGL ES 是专为内嵌和移动设备设计的一个 2D/3D 轻 量图形库,它是基于 OpenGL API 设计的。OpenGL ES 1.0 版基于 OpenGL 1.3,而 OpenGL ES 1.1 则是基于 OpenGL 1.5 的。现在主要由Khronos Group( http:/www.khronos.org/)来负责管理 OpenGL ES 的开 发维护。 An
6、droid 平台在 sdk2.0 之前支持 OpenGL ES 1.1,而在 2.0 以后的 版本则支持 OpenGL ES 2.0。华章培训 第 10 页OpenGL 与 OpenGL ES 区别之所以会推出 OpenGL-ES 版本,主要是应对嵌入式环境 和应用的要求。 嵌入式设备一般工作于较恶劣的环境,包括:温度、湿度 、振动、冲击、酸碱腐蚀等。例如:中国的酸雨气候就给很多 室外电子设备带来了新的难题,中东地区的风沙也使得美军必 须采用更先进的非 IT 技术来保护他们的电子设备。 需要人机界面的嵌入式应用,由于受环境受环境因素的影 响,一般不能提供有缘电源,在有限的电能限制下工作,如何
7、以更低的功耗完成人机交互界面,成为 OpenGL 必须要面对的 问题,进而推出了 OpenGL-ES 标准。应该说在高效完成 2D/3D 界面的同时,达到了降低功耗的效果。华章培训 第 11 页OpenGL 与 OpenGL ES 区别特别说明,在 OpenGL 发展到 1.3 版本时,OpenGL API 不再采用纯软件的形势进行运算,开始与硬件图形芯片结合, 出现了OpenGL 硬加速的实现形式。例如:很多显示芯片厂商 开始推出支持 OpenGL 硬加速的芯片,并与软件公司合作,实 现 OpenGL 硬加速。很多 PC 机的游戏会有加速软件,如实况足 球,但目前这类基于 PC加速软件还是通
8、过软件形式进行优化, 球 目 基于 PC 件 通过 件形 即优化了 3D 渲染引擎。OpenGL 硬加速的优点在于,使 CPU 从 繁重的图形运算工作中解脱出来,将运算重点集中于非界面应 用,即嵌入式操作系统中优先级较高,但与界面无关的应用。 GPU(图形处理器)与 CPU(中央处理器)的分工合作,带来 的就是高效率。华章培训 第 12 页OpenGL 与 OpenGL ES 区别当然,事物均具有两面性,OpenGL-ES 硬加速也有缺点 ,即增加了设备成本。这方面主要取决于其应用是否需要强劲 的性能,即对人机交互界面的更高性能的追求。 OpenGL ES 相对 OpenGL 删减了一切低效能
9、的操作方式, 有高性能的决不留低效能的: 没有double 型数据类型,但加入了高性能的定点小数数据 类型; 没有glBegin/glEnd/glVertex,只能用 glDrawArrays 等。 没有实时将非压缩图片数据转成压缩贴图的功能,程序必须 直接提供压缩好的贴图;华章培训 第 13 页OpenGL ES 1.x 和 OpenGL ES 2.xOpenGL ES 1.x 为固定渲染管线(Fixed_Function )而设计。子版本包括:1.0,1.1。1.0 从 OpenGL 1.3 裁 减而来;1.1 从OpenGL_1.5 裁减而来。1.1 向下兼容 1.0。 经研究,1.1
10、因为更先进,而且相比 1.0 增加的特性也都很有 用,所以基本上不用考虑 1.0了。1.1 和 1.0 的变化不算很大 OpenGL ES 2.x 为可编程渲染管线(Programmable )而设计。目前只有 2.0 这一个子版本,从OpenGL2.0 裁减而 来。和 1.x 的区别是可以支持 vertex 和 pixel shader,因 此能够实现更多的特效。另外 2.0 就不再支持 1.x 里面的固定 管线功能了,也就是说 2.x 并不向下兼容 1.x。华章培训 第 14 页Android OpenGL ES 开发框架ES 开发 开发包 OpenGL ES 开发包 android.op
11、engl.*; ES 视图 OpenGL ES 视图 GLSurfaceView Renderer /OpenGL 视图 /渲染器华章培训第 15 页Android OpenGL ES 开发框架Renderer 接 Renderer 接口onSurfaceCreated(GL10 gl, EGLConfig config) onSurfaceChanged(GL10 gl, int width, int height) onDrawFrame(GL10 gl)华章培训第 16 页小结OpenGLOpenGL ESonSurfaceCreated GLSurfaceView Renderer o
12、nSurfaceChanged onDrawFrame华章培训第 17 页作业思考? 思考? 如何在 OpenGL ES 开发框架上绘制图形?并为图 形添加颜色和进行变换操作?华章培训第 18 页基本图形的绘制主讲人:杨丰盛华章培训网、华章培训网版权所有课程目标通过 OpenGL 来完成 2D 多 形的绘制。 通过 OpenGL 来完成 2D多边形的绘制。 OpenGL 2D坐标系、点、线、三角形、四边形、顶点数组 、为多边形添加颜色。 添加颜色。颜色数组、着色模式变换操作。 换操作平移、旋转、缩放华章培训第 20 页2D 多边形坐标系、点、顶点 标系、3D 图像的最小单位称为 点(point
13、) 或者 顶点 (vertex)。它们代表三维空间中的一个点并用来建造更复杂 的物体。多边形就是由点构成,而物体是由多个多边形组成。 尽管通常 OpenGL 支持多种多边形,但 OpenGL ES 只支持三边 形(即三角形) 。华章培训第 21 页2D 多边形三角形 三角形由不在同一直线上的三条线段首尾顺次连接所组成的封闭 图形叫做三角形。 (0,1,0)/上顶点 (0,0,0)/直角处顶点 (1,0,0)/右边顶点华章培训第 22 页2D 多边形在 OpenGL 中绘制 2D 多边形常用的函数以及常量: OpenGL 中绘制 2D 多 2D 用的函数以及常量: 常量glEnableClien
14、tState/glDisableClientState:状态开关 glVertexPointer:设置顶点数据 glDrawArrays:绘制函数GL_VERTEX_ARRAY:顶点数组GL_BYTE/GL_SHORT/GL_FIXED/GL_FLOAT:顶点数据的类型 GL_LINES:线GL_TRIANGLES:三角形 GL_TRIANGLE_STRIP:三角形带华章培训第 23 页颜色OpenGL ES 只支持 RGBA 颜色模式,即我们通过定义红, 绿,蓝以及 alpha 元素来定义颜色, alpha 值定义了颜色之 后物体的透视(明)程度。 颜色数组 和顶点数组一样,由每一个顶点的颜
15、色数据组成。 着色模式 在 OpenGL ES 中,我们可以为整体物体设计一个单一的 颜色,称之为“单一着色” ; 也可以用多种颜色混合渲染, 而颜色之间过渡很平滑,称之为“平滑着色” 。华章培训 第 24 页颜色常用函数及常量 用函数及常量glColor4f:设置单一颜色 glColorPointer:设置颜色数组GL_COLOR_ARRAY:颜色数组(通过状态开关函数glDisableClientState 来操作)GL_COLOR_BUFFER_BIT:颜色缓存华章培训第 25 页变换ES 有三种不同类型的变 的变换 它们分别是: OpenGL ES 有三种不同类型的变换,它们分别是:转
16、移(Translate):在 3D 空间中移动物体 旋转(Rotate):绕 X, Y, 或者 Z 轴进行旋转 缩放(Scale):改变物体的大小华章培训第 26 页变换常用函数及常量 用函数及常量glTranslatef:平移 glRotatef:旋转 glScalef:缩放华章培训第 27 页小结点、线 图形元件 三角形 顶点数组 单一着色 2D 图形 颜色 平滑着色 平移 变换 旋转 缩放华章培训 第 28 页作业思考? 思考? 如何绘制 3D 图形呢?比如:立方体。 在 3D 空间中,当多个相同物体在同一直线上时,前面的物体 是否要遮挡后面的物体呢?如何才能让观察者看得更逼真呢?华章培训第 29 页光效主讲人:杨丰盛华章培训网、华章培训网版权所有课程目标阴影模型 GL_FLAT(恒定) 、 GL_SMOOTH