预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共44页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Android书籍 Android应用开发书籍推荐 技术支持(交流平台) 课程计划 课程概述 功能演示 课程需求分析AndroidOpenGLES开发基础构建AndroidSDK应用程序开发环境 Eclipse(3.4及其以上版本) AndroidSDK(1.5以上) ADT(0.9以上)OpenGLES概述 OpenGL与OpenGLES概述 OpenGL与OpenGLES区别 OpenGLES开发框架 GLSurfaceView RendererOpenGL 是由SGI公司开发的一套3D图形软件接口标准,由于具有体系结构简单合理、使用方便、与操作平台无关等优点,OpenGL迅速成为一种3D图形接口的工业标准,并陆续在各种平台上得以实现。作为一个性能优越的图形应用程序设计界面(API)而适合于广泛的计算环境,从个人计算机到工作站和超级计算机,OpenGL都能实现高性能的三维图形功能。由于许多在计算机界具有领导地位的计算机公司纷纷采用OpenGL作为三维图形应用程序设计界面,OpenGL应用程序具有广泛的移植性。因此,OpenGL已成为目前的三维图形开发标准,是从事三维图形开发工作的技术人员所必须掌握的开发工具。(http://www.opengl.org/)OpenGLES OpenGLES是专为内嵌和移动设备设计的一个2D/3D轻量图形库,它是基于OpenGLAPI设计的。OpenGLES1.0版基于OpenGL1.3,而OpenGLES1.1则是基于OpenGL1.5的。。 Android平台在sdk2.0之前支持 OpenGLES1.1,而在2.0以后的 版本则支持OpenGLES2.0。 之所以会推出OpenGL-ES版本,主要是应对嵌入式环境和应用的要求。 嵌入式设备一般工作于较恶劣的环境,包括:温度、湿度、振动、冲击、酸碱腐蚀等。例如:中国的酸雨气候就给很多室外电子设备带来了新的难题,中东地区的风沙也使得美军必须采用更先进的非IT技术来保护他们的电子设备。 需要人机界面的嵌入式应用,由于受环境受环境因素的影响,一般不能提供有缘电源,在有限的电能限制下工作,如何以更低的功耗完成人机交互界面,成为OpenGL必须要面对的问题,进而推出了OpenGL-ES标准。应该说在高效完成2D/3D界面的同时,达到了降低功耗的效果。 特别说明,在OpenGL发展到1.3版本时,OpenGLAPI不再采用纯软件的形势进行运算,开始与硬件图形芯片结合,出现了OpenGL硬加速的实现形式。例如:很多显示芯片厂商开始推出支持OpenGL硬加速的芯片,并与软件公司合作,实现OpenGL硬加速。很多PC机的游戏会有加速软件,如实况足球,但目前这类基于PC加速软件还是通过软件形式进行优化,即优化了3D渲染引擎。OpenGL硬加速的优点在于,使CPU从繁重的图形运算工作中解脱出来,将运算重点集中于非界面应用,即嵌入式操作系统中优先级较高,但与界面无关的应用。GPU(图形处理器)与CPU(中央处理器)的分工合作,带来的就是高效率。 当然,事物均具有两面性,OpenGL-ES硬加速也有缺点,即增加了设备成本。这方面主要取决于其应用是否需要强劲的性能,即对人机交互界面的更高性能的追求。 OpenGLES相对OpenGL删减了一切低效能的操作方式,有高性能的决不留低效能的: 没有double型数据类型,但加入了高性能的定点小数数据类型; 没有glBegin/glEnd/glVertex,只能用glDrawArrays等。 没有实时将非压缩图片数据转成压缩贴图的功能,程序必须直接提供压缩好的贴图; OpenGLES1.x为固定渲染管线(Fixed_Function)而设计。子版本包括:1.0,1.1。1.0从OpenGL1.3裁减而来;1.1从OpenGL_1.5裁减而来。1.1向下兼容1.0。经研究,1.1因为更先进,而且相比1.0增加的特性也都很有用,所以基本上不用考虑1.0了。1.1和1.0的变化不算很大 OpenGLES2.x为可编程渲染管线(Programmable)而设计。目前只有2.0这一个子版本,从OpenGL2.0裁减而来。和1.x的区别是可以支持vertex和pixelshader,因此能够实现更多的特效。另外2.0就不再支持1.x里面的固定管线功能了,也就是说2.x并不向下兼容1.x。OpenGLES开发包 android.opengl.*; OpenGLES视图 GLSurfaceView//OpenGL视图 Renderer //渲染器Renderer接口 onSurfaceCreated(GL10gl,EGLConfigconfig) onSurfaceChanged(GL10gl,intwidth,inthe