一、简介
EGL 是渲染 API(如 OpenGL ES)和原生窗口系统之间的接口。
通常来说,OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机的运行状态,但是当涉及到与本地窗口系统进行交互时,就需要这么一个中间层,且它最好是与平台无关的。
因此 EGL 被设计出来,作为 OpenGL 和原生窗口系统之间的桥梁。
二、功能
EGL API 是独立于 OpenGL ES 各版本标准的独立的一套 API。
2.1 主要作用:
- 为 OpenGL 指令创建Context;
- 绘制目标Surface;
- 配置FrameBuffer属性;
- Swap提交绘制结果等。
2.2 EGL提供如下机制:
- 与设备原生窗口通信;
- 查询绘制Surface的可用类型和配置;
- 创建绘制surface;
- 在OpenGL ES 3.0或其他渲染API之间同步渲染;
- 管理纹理贴图等渲染资源
三、使用
3.1 检查错误的方法
EGL 中大部分函数成功时都是返回 EGL_TRUE,失败返回 EGL_FALSE。
至于故障原因,需要调用如下函数获取:
EGLint eglGetError();
返回最近调用 EGL 函数的错误代码,如果返回 EGL_SUCCESS 说明没有错误。
3.2 创建。建立本地系统和OpenGL ES的连接
EGLDisplay eglGetDisplay(EGLNativeDisplayType displayId);
displayId 指定显示连接,一般使用默认的 EGL_DEFAULT_DISPLAY,即返回与默认原生窗口的连接。
相关错误码:
- EGL_NO_DISPLAY :连接不可用
3.3 初始化
EGLBoolean eglInitialize(EGLDisplay display, // 创建步骤时返回的对象
EGLint *majorVersion, // 返回 EGL 主版本号
EGLint *minorVersion); // 返回 EGL 次版本号
相关错误码:
- EGL_NO_DISPLAY :EGL 不能初始化
- EGL_BAD_DISPLAY :没有指定有效的 display
实例:

最低0.47元/天 解锁文章
1155

被折叠的 条评论
为什么被折叠?



