• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

OpenGL ES EGL 简介

武飞扬头像
猿说编程
帮助2

目录

一.EGL 简介

EGL 是渲染 API(如 OpenGL ES)和原生窗口系统之间的接口。通常来说,OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机的运行状态,但是当涉及到与本地窗口系统进行交互时,就需要这么一个中间层,因此 EGL 被设计出来,作为 OpenGL 和原生窗口系统之间的桥梁,且它与平台无关的。

学新通

在不同平台上有不同的机制以关联窗口系统,在 Windows 上是 WGL ,在 Linux 上是 GLX ,在 Apple OS 上是 AGL 等。

EGL 则是平台上 WGL / GLX / AGL 的等价物。EGL 假设 OS 会提供窗口系统,但 EGL 与平台无关,并不局限于任何特定的窗口系统,所有用到本地窗口系统的地方都用屏蔽指针来处理,这就是易于移植的关键。

学新通

二.EGL 跨平台之ANGLE

EGL API 是独立于 OpenGL ES 各版本标准的独立的一套 API,其主要作用是为 OpenGL ES 指令 创建 Context 、绘制目标 Surface 、配置 FrameBuffer 属性、Swap 提交绘制结果 等。

ANGLE 是一个 谷歌 发起的开源项目, 用在 chromium 项目里面,作为底层的图形渲染引擎的一部分。ANGLE 的目标是通过将 OpenGL ES API 调用转换为该平台可用的硬件支持的 API 之一,从而允许多个操作系统的用户无缝运行 WebGL 和其他 OpenGL ES 内容。换句话说,angle 就是把 opengl es 翻译成其他的语言,譬如说 D3D9 / OpenGL ES / Vulkan 等等。

1.ANGLE 支持跨平台

学新通

2.ANGLE支持渲染器

学新通

ANGLE 支持 Windows / Mac / Linux / Android / Ios ;

ANGLE 目前提供从 OpenGL ES 2.0、3.0 和 3.1 到 Vulkan、桌面 OpenGL、OpenGL ES、Direct3D 9 和 Direct3D 11 的转换;

未来的计划包括 ES 3.2,转换到 Metal 和 MacOS、Chrome OS 和 Fuchsia 支持;

关于**ANGLE 编译后面会有详细讲解,留意文章目录《OpenGL ES 基础》;**

3.ANGLE下载地址

谷歌 angle 下载地址:https://github.com/谷歌/angle

三.EGL 坐标系

EGL 坐标系和 OpenGL ES 坐标系统一致,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uCuafFjE-1663667287049)(https://www.codersrc.com/wp-content/uploads/2022/08/78805a221a988e7-2.png “OpenGL ES EGL 简介-猿说编程”)]

学新通

很多人有一个误解:认为 OpenGL ES 纹理原点在左上角,因为如果绘制时纹理坐标设在左下角,绘制的图像就是上下倒立;而纹理坐标设制在左上角显示正常

原因:图像默认的原点在左上角,而 OpenGL ES 纹理读取数据或者 FBO 读取数据时都是以左下角开始,所以图像才会出现上下倒立的现象;

在文章《OpenGL ES 名词解释(二)》中也有对坐标系有详细讲解;

四.EGL 绘图步骤

  1. 获取 EGL Display 对象:eglGetDisplay()
  2. 初始化与 EGLDisplay 之间的连接:eglInitialize()
  3. 获取 EGLConfig 对象:eglChooseConfig()
  4. 创建 EGLContext 实例:eglCreateContext()
  5. 创建 EGLSurface 实例:eglCreateWindowSurface()
  6. 连接 EGLContext 和 EGLSurface:eglMakeCurrent()
  7. 使用 OpenGL ES API 绘制图形:gl_*()
  8. 切换 front buffer 和 back buffer 送显:eglSwapBuffer()
  9. 断开并释放与 EGLSurface 关联的 EGLContext 对象:eglRelease()
  10. 删除 EGLSurface 对象
  11. 删除 EGLContext 对象
  12. 终止与 EGLDisplay 之间的连接

学新通

关于 **EGL API** **后面会有详细讲解,留意文章目录《OpenGL ES 基础》;**

五.猜你喜欢

  1. OpenGL ES 简介
  2. OpenGL ES 版本介绍
  3. OpenGL ES 2.0 和 3.0 区别
  4. OpenGL ES 名词解释(一)
  5. OpenGL ES 名词解释(二)
  6. OpenGL ES GLSL 着色器使用过程
  7. OpenGL ES EGL 简介

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibjcih
系列文章
更多 icon
同类精品
更多 icon
继续加载