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

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

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

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

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

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

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

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

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

A. android1.6 之前( cupcake donut

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 ES API 调用。在未来的 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 实现 copybit 2D 图形加速引擎具体要求( 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 图形引擎驱动实现,如有余力建议加上。

更多相关文章

  1. 基于WiEngine游戏引擎--背景移动
  2. Android(安卓)Dalvik
  3. android jqMobi 1.0 发布
  4. Android阴影效果与CardView版本适配的细节问题
  5. 读书笔记(一)---GoogleAndroid开发入门指南(第二版)人民邮电出版社
  6. eclipse导入android的jar包
  7. Android(安卓)SDK 2.2安装问题
  8. Ubuntu安装Android的SDK
  9. 导入旧版本Android项目时的“Unable to resolve target ‘androi

随机推荐

  1. Android移植之dropbear
  2. gdb+gdbserver调试android的so文件
  3. Android(安卓)RecyclerView利用Glide加载
  4. android - Gesture学习 1
  5. Android(安卓)HAL层与Linux Kernel层驱动
  6. Android(安卓)Studio NDK项目移植问题 re
  7. Android——详解Paint的setPathEffect(Pa
  8. Android(安卓)各个版本区别及如何选择
  9. jadx:好用的反编译工具
  10. Android(安卓)四大组件 —— 广播(广播机