Opengl es 请向我解释什么是Android中的EGL?

Opengl es 请向我解释什么是Android中的EGL?,opengl-es,egl,Opengl Es,Egl,最近,我正在使用CameraToMpeg示例,在这里我们可以看到如何使用OpenGLES。最后的步骤之一是初始化EGL14以记录当前OPNEGLES上下文并将其交换到MediaCodec 然而,我的问题是:EGL14到底是什么?为什么EGL14是一种创建OPENGLES可以渲染的曲面的机制,因为在一个简单的OPENGLES中,我从不初始化EGL14?它是一个附加类,还是OPENGLES操作所必需的类?EGL如何知道当前的OPENGLES上下文是什么?我还可以用它做什么,例如,我是否能够在OPEN

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


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

OpenGL或OpenGL ES—是关于在某些环境中渲染的一切。它不知道也不关心环境到底是什么。只要它提供了所需的兼容函数列表,就可以调用这些函数来实现所需的结果——这就是OpenGL

现在,您如何创建该环境?由于这不是OpenGL的责任,因此必须由其他人完成,并且必须以符合承载渲染应用程序的系统规则的方式完成

这就是EGL所在的地方——它定义了一个API,由某个库转换为底层的窗口系统调用。与GLX和WGL一样,EGL负责在Linux和Windows上创建OpenGL上下文,EGL负责在嵌入式系统中创建OpenGL ES上下文。Android并不是唯一使用EGL的平台,几乎所有支持Linux的单SoC ARM计算机都将公开EGL API,因此应用程序将能够创建有效的渲染上下文


如果您从未使用过EGLAPI,那么这意味着您从未为Android编写过本机应用程序,或者其他一些java类(如
GLSurfaceView
)正在为您打包。看看基本的例子,你会发现很多关于EGL的参考资料。至少要求您提供
EGLConfigChoser
,或者至少为隐式创建的EGLConfigChoser提供一些参数。

OpenGL或OpenGL ES-是在某些环境中渲染的一切。它不知道也不关心环境到底是什么。只要它提供了所需的兼容函数列表,就可以调用这些函数来实现所需的结果——这就是OpenGL

现在,您如何创建该环境?由于这不是OpenGL的责任,因此必须由其他人完成,并且必须以符合承载渲染应用程序的系统规则的方式完成

这就是EGL所在的地方——它定义了一个API,由某个库转换为底层的窗口系统调用。与GLX和WGL一样,EGL负责在Linux和Windows上创建OpenGL上下文,EGL负责在嵌入式系统中创建OpenGL ES上下文。Android并不是唯一使用EGL的平台,几乎所有支持Linux的单SoC ARM计算机都将公开EGL API,因此应用程序将能够创建有效的渲染上下文


如果您从未使用过EGLAPI,那么这意味着您从未为Android编写过本机应用程序,或者其他一些java类(如
GLSurfaceView
)正在为您打包。看看基本的例子,你会发现很多关于EGL的参考资料。至少会要求您提供
EGLConfigChoser
,或者至少为隐式创建的EGLConfigChoser提供一些参数。

告诉我!“EGL是Khronos渲染API(如OpenGL ES或OpenVG)与底层本机平台窗口系统之间的接口”这意味着什么?为什么EGL14是一种创建OPENGLES可以渲染的曲面的机制,因为在一个简单的OPENGLES中,我从不初始化EGL14?在哪里可以找到更多关于it的文档-书籍?EGL如何知道当前的OPENGLES上下文是什么?我还可以用它做什么,例如,我是否能够在OPENGLES中创建具有具体纹理的上下文?给我找一个与Khronos或诸如此类公司运营的EGL overview合作的人,你在开玩笑吗?谁说的?只需回答上述问题即可。现在看来我正在与自己对话。告诉我吧!“EGL是Khronos渲染API(如OpenGL ES或OpenVG)与底层本机平台窗口系统之间的接口”这意味着什么?为什么EGL14是一种创建OPENGLES可以渲染的曲面的机制,因为在一个简单的OPENGLES中,我从不初始化EGL14?在哪里可以找到更多关于it的文档-书籍?EGL如何知道当前的OPENGLES上下文是什么?我还可以用它做什么,例如,我是否能够在OPENGLES中创建具有具体纹理的上下文?给我找一个与Khronos或诸如此类公司运营的EGL overview合作的人,你在开玩笑吗?谁说的?只需回答上述问题即可,现在看来我正在与自己对话