Chinaunix首页 | 论坛 | 博客
  • 博客访问: 276966
  • 博文数量: 95
  • 博客积分: 2047
  • 博客等级: 大尉
  • 技术积分: 1022
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 16:18
文章分类

全部博文(95)

文章存档

2013年(1)

2011年(94)

我的朋友

分类: 嵌入式

2011-08-28 20:46:27

2D加速
Android2.1版本及以上,800x480分辨率的LCD,在没有2D加速情况下,界面显示速度不可接受,拖动界面反应迟钝。
分析原因,主界面由RGB背景和RGBA前景图标组成,一幅800x480的RGBA图形要占用1500KB内存,RGB则是750KB,如果完全由CPU进行RGBA和RBA的merge操作,将会消耗大量时间(每个点都要计算)。
在系统中使用2D加速引擎后,可以大幅提高系统界面流畅性,同时某些2D测试程序成绩大幅提升,同时可大幅降低界面操作的CPU占用率。
总结:Android2.1系统中推荐使用2D加速。

3D加速
Android2.1系统以后很多地方提供了标准和高级两种方案,比如主界面提供Launcher和Launcer2两个选择。其中Launcher即为以前版本的主界面,Launcher2则第一次出现在Google Nexus One手机中,需要3D硬件支持,否则无法运行。
此外还有替代Gallery的Gallery3D应用程序,可以以3D效果显示图片,我尝试编译进系统,可以运行该程序,但是在显示3D图片时调用OpenGL的API报错。
“I/RenderView(  249): Texture creation fail, glError 128”
大部分Liverwallpaper也需要3D支持才可以正常显示。
总结:如果需要更好的效果,推荐使用3D加速。


2D加速实现方案
当前HTC手机采用的高通msm7k和msm8k的方案,是采用copybit模块实现2D加速,因为msm系列处理器的2D和3D加速单元是分开的。
然而采用TI3430方案的摩托罗拉Milestone并没有采用Copybit模块对2D进行特殊处理。
为什么TI没有使用copybit呢,因为copybit的上层封装实际就是Opengl es的API(GLdrawTexi等),TI的2D/3D加速引擎使用的是POWERVR SGX™,这个引擎是完整OpenGL ES支持的,也就是实现了所有(至少是所有必须的)的OpenGL ES API,并没有特意去区分2D和3D加速。

总结:Copybit现在是什么东西?现在的Copybit是封装在Android系统opengl软件实现(libagl)库的一部分,仅对openGL ES 2D API进行封装,实现openGL ES 2D API到硬件的加速功能。如果处理器的GPU较为统一,可以完全替代libagl,那么可以丢开copybit,自己去实现openGL ES 2D API的加速功能。
如果你的处理器只有2D加速,没有3D,那么可以去实现copybit,因为相对3D API来说,这个模块的封装google基本是做好的,只要去实现一个HAL即可。
阅读(970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~