渲染
资料来自网络收集。
1.名词解释
GPU:GraphicProcessing Unit (图形处理器)
OpenGL:OpenGraphic Library 定义了一个跨编程语言、跨平台的编程接口的规
格,不同厂商会有不同的实现方法,它主要用于三维图象(二维的亦可)绘制。
SurfaceFlinger:Android 中负责 Surface 之间叠加、混合操作的动态库
Skia:Android 中的 2D 图形库
libagl:Android 中通过软件方法实现的一套 OpenGL 动态库
libhgl :为区别 libagl,自定 义 的 一种叫 法 。 特指 GPU 厂 商 提供 的 硬 件 实现 的
OpenGL
composition:特指 SurfaceFlinger 对各个 Surface 之间的叠加、混合操作
render:特指使用 OpenGL 动态库进行 3D 渲染
copybit:Android 使 用 2D 引 擎 来 加 速 图 形 操 作 ( 主 要 是 Surface 之 间 的
composition 操作)的一种技术,对应着一个或几个动态库。
pmem:Android 特有驱动,从 linux 内核中 reserve 物理连续内存,可以为 2d、3d
引擎、vpu 等设备分配物理连续内存。
3D、2D 引擎在 Android 中的使用方法
2.1%%Android 如何使用 2D、3D 引擎
Android 在启动后,会在运行时根据配置文件加载 OpenGL(libagl & libhgl)的实现,
如果有 libhgl 实现,默认使用 libhgl 实现,否则使用 libagl 实现。
Android OpenGL 动态库使用方法:
1. 判断是否含有 egl.cfg 文件,如果没有在加载 libagl
2. 如果有 egl.cfg 文件,则解析 egl.cfg 文件,根据 egl.cfg 文件加载对应 libhgl 和
libagl
3. 分别解析 libagl 和 libhgl,获取 libagl 和 libhgl 中标准 OpenGL 函数的函数地址
(函数指针)
4. 系统在执行过程中,会通过函数指针调用到 libagl 或者 libhgl 中去,从而实现图形
的绘制。
OpenGL 在 Android 中两个作用:
1.用于 Surface 的 composition 操作。
SurfaceFlinger 会调用到 OpenGL 中,通过 libagl 或者 libhgl 做 Surface 的组
合、叠加操作。
2.用于图形图像的渲染
Android framework 会对 OpenGL 实现进行 java 层次的简单封装,在 java 应
用程序中对 OpenGL 的调用最终会调用到 libagl 或者 libhgl 中去。
很多第三方游戏、3D 图库、某些 launcher 会使用 OpenGL 实现比较炫丽 UI 的
特效。
Copybit 在 Android 中的作用
Copybit 在 Android 中主要用于 Surface 的 composition 操作。
评论0