Android 使用 OpenGL ES API 渲染图形。OpenGL ES 缩写为 GLES。 GLES 是 OpenGL 的适于嵌入式设备的一个版本。OpenGL 是一个渲染 API,只负责渲染。渲染到哪里呢?着要系统实现。
为了创建 GLES 上下文并为 GLES 提供窗口系统, Android 使用 EGL 库。EGL 就是负责提供一个渲染的地方, GLES 会绘制到它上面。
在使用 GLES 进行绘制之前, 需要创建 GL 上下文。 在 EGL 中, 这意味着要创建 EGLContext 和 EGLSurface。GLES 操作应用于当前的上下文, 当前的上下文使用 线程本地变量来存储而不是使用参数传递。渲染的代码应该在当前的 GLES 线程,而不能在 UI 线程。
EGLSurface
EGLSurface 有两种:
- 一种就是显示到屏幕上的,是被系统分配的。使用 eglCreateWindowSurface()创建
- 另一种是绘制到 离屏的缓冲区, 由 EGL 分配。 使用 eglCreatePbufferSurface() 创建
EGL 相当于 GLES 的画布, 将绘制的数据传出去。