从android角度看2D加速图形引擎

来源:互联网 发布:软件license管理方法 编辑:程序博客网 时间:2024/05/22 06:11

转自http://blog.chinaunix.net/u3/99423/showart_2196578.html

 

1.      2D图像加速引擎之于android系统的必要性:

实验过程:通过在两台智器q5上做对比测试,使用操作系统均为android1.5版本。其中一台所运行的android是日本团队为智器q5开发(已打开2D加速)显示效果非常流畅。另一台所运行的android是我们团队自己移植编译的(没有打开2D加速),窗口在拖拉的时候会出现闪烁。

实验结论:基本确认2D图形加速引擎对于运行android不可缺少。

 

2.      android2D图像加速引擎的要求:

Android对底层2D图形加速引擎的调用主要是通过两个方面,一个是copybit,一个是标准的OpenGL ES

copybit的硬件要求:实现copybit对硬件的要求不高,它只是基本2D功能的子集,包括旋转,放大缩小,颜色/像素格式转换(这些特性可以被部分支持)。

OpenGL ES的硬件要求:如果是实现标准的OpenGL则需要硬件IP完整支持OpenGL ES

 

Android对这两者的支持在版本上稍有差异,可以从两个方面来讲,一个是android1.6版本之前,一个是android1.6版本之后。

A.android1.6之前(cupcakedonut

android1.6之前(包含1.6版本),在copybit模块和OpenGL ES同时存在时,界面(SurfaceFlinger)会自动优先调用copybit模块。

B. android1.6之后(2.0  2.1

donut版本(android1.6)之后,copybit模块不会被界面(SurfaceFlinger)直接调用,而是作为Open GL ES 1.x的后端处理使用,SurfaceFlinger只会被Open GL ESAPI调用。在未来的android版本中copybit将会被淘汰掉。(官方原话: Eventually, the copybit module will be phased out, instead, we will ask the ISV/OEMs to implement these features on their OpenGL ES drivers, if they think it is necessary.

 

3.      结论:

android的角度来看有两种方案:1使用copybit,这样对2D的硬件要求不高,而且在可预见的未来还是能够被android支持的。2 使用OpenGL的标准,这是android的未来趋势,但是无论在硬件还是软件的实现代价太大。

鉴于此,我个人推荐使用copybit。下面是需要实现android实现copybit2D图形加速引擎具体要求(These features can be supported in full or partially.):

 

 

必须支持

可选

 

颜色格式RGB_565  

RGBA_8888    BGRA_8888    RGBA_5551   RGBA_4444

YCbCr_422_SP          YCbCr_420_SP   YCbCr_422_I

 

旋转90° 180° 270° x-flip y-flip

 

 

矩形区域的缩放

 

 

Alpha blending(可以任意选定两块相同大小区域作为源)

 

 

Bitblt

 

 

Clip剪切

 

 

 

DITHER

 

 

不同颜色格式间的转换

注:必须支持是指copybit源代码中已包括的常见操作,且一般主流的2D图形加速引擎都会支持的特性。可选是指copybit源码中已经包括了这个特性,但有些厂商没有为他们的2D图形引擎驱动实现,如有余力建议加上。

原创粉丝点击