请向我解释Android中的EGL到底是什么?

问题描述 投票:0回答:1

最近,我正在使用bigflake.com CameraToMpeg示例,在这里我们可以看到如何使用OpenGLES。最后的步骤之一是初始化EGL14,以记录当前的OPNEGLES上下文并将其交换到MediaCodec。

然而,我的问题是:什么是EGL14?为什么EGL14是一种用于创建可在其上渲染OPENGLES的表面的机制,因为在简单的OPENGLES中,我从未初始化过EGL14?它是OPENGLES操作的附加类还是必不可少的? EGL如何知道当前的OPENGLES上下文是什么?我还能做什么呢?例如,我可以在OPENGLES中使用具体纹理创建上下文吗?在哪里可以找到有关它的更多文档-书籍?

opengl-es egl
1个回答
0
投票

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,或至少为隐式创建的EGLConfigChoser提供一些参数。

© www.soinside.com 2019 - 2024. All rights reserved.