OpenGL/OpenGL ES入门(二):EGL的介绍和使用(context上下文的创建和初始化)

一、简介

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

实例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值