最近在拜看林学森先生的《深入理解 Android 内核设计思想》,特作此笔记。
OpenGL ES,ES 是 Embedded System 的缩写。其包括如下几个方面:
- OpenGL ES,协议规范,而非软件库;
- EGL,Embedded-System Graphics Library,an interface between rendering APIs(OpenGL ES) and the underlying native platform windowing system.
- Mesa 3d,兼容 OpenGL 协议的 3D 图像处理软件库;
EGL 的作用:
EGL handles graphics context management, surface/buffer binding, rendering synchronization, and enables “high-performance, accelerated, mixed-mode 2D and 3D rendering using other Khronos APIs.
上层应用通过两种方法使用 OpenGL Es:
- SDK 提供的 EGL,GLES java 类;
- GLSurfaceView
GLSurfaceView 既具备 View 类的能力(特别是接收事件的能力),又拥有 OpenGL ES 提供的强大的 3D 图像处理能力,为编写高质量 UI 界面和游戏特效奠定了基础。
GLSurfaceView 的特性:
- 管理 EGLDisplay,它表示一个显示屏;
- 管理 Surface,本质上是一个内存块;
- GLSurfaceView 会创建新的线程,以使整个渲染过程不阻塞 UI 主线程;
- 用户可以自定义渲染方式,如通过 setRenderer() 设置;
当前很多安卓游戏都是直接或间接通过 GLSurfaceView 完成的。