最近我正在使用bigflake.com CameraToMpeg 示例,我们可以在其中了解如何使用 OpenGLES。最后步骤之一是初始化 EGL14 以记录当前的 OPNEGLES 上下文并将其交换到 MediaCodec。
然而我的问题是:EGL14 到底是什么?为什么 EGL14 是一种用于创建 OPENGLES 可以渲染的表面的机制,因为在简单的 OPENGLES 中我从不初始化 EGL14?它是一个额外的类,还是 OPENGLES 操作所必需的?EGL 如何知道当前的 OPENGLES 上下文是什么?我还能用它做什么,例如我可以在 OPENGLES 中创建具有混凝土纹理的上下文吗?在哪里可以找到更多有关它的文档 - 书籍?
OpenGL 或 OpenGL ES - 是有关某些环境中渲染的一切。它不知道也不关心那个环境到底是什么。只要它提供了所需的兼容函数列表,可以调用这些函数来实现所需的结果 - 这就是适合您的 OpenGL。
现在你如何创造这个环境?由于这不是 OpenGL 的责任,因此必须由其他人来完成,并且必须以符合托管渲染应用程序的系统规则的方式完成。
这就是 EGL 的位置 - 它定义了一个 API,该 API 被某些库转换为底层窗口系统调用。与 GLX 和 WGL 负责在 Linux 和 Windows 上创建 OpenGL 上下文一样,EGL 负责在嵌入式系统中创建 OpenGL ES 上下文。Android 并不是唯一使用 EGL 的平台,几乎所有支持 Linux 的单 SoC ARM 计算机都将公开 EGL API,因此应用程序将能够创建有效的渲染上下文。
如果您从未使用过 EGL api - 那么这意味着您从未为 Android 编写过本机应用程序,或者某些其他 java 类(例如GLSurfaceView)正在为您包装一些东西。查看基本的 GLES 示例,您会发现许多对 EGL 内容的引用。至少会要求您提供EGLConfigChooser,或者至少为隐式创建的 EGLConfigCoser 提供一些参数。
| 归档时间: |
|
| 查看次数: |
2813 次 |
| 最近记录: |