Android上的EGL与GLES 2.0(例如Java)

时间:2011-06-28 16:11:35

标签: android opengl-es-2.0

(经验丰富的c程序员,预着色器,固定功能open gl。称职的Java程序员)

我一直在Android上使用GLES并且已经运行了示例(本机和Java)。特别是纹理三角形的例子。令我完全困惑的是Khronos EGL和android GLES界面的“关系”。

这些是并行的独立接口(API)吗? EGL应该是一个独立于平台(中立)的界面吗? EGL似乎完全支持GLES 1.0和1.1,但不支持ES 2.0(在Android上)?

所以,在我看来,EGL 假设是一个平台中立的并行接口,它不完全支持 GLES 2.0 (在Android上);因此,如果您正在编写GLES 2.0代码(在Android上),那么最好只使用GLxxx API而不是EGLxxx API(并且无论如何都必须使用GLxxx API)。据我所知,你没有> HAVE <将EGL用于任何事情,因为它只支持ES 2.0 API的一个子集。

(每个示例/书籍/参考要么混合使用两者,使用原生界面或仅使用EGL 1.1功能;我在这里缺少一些基本的东西吗?)

2 个答案:

答案 0 :(得分:22)

EGL是OpenGL ES的补充。 EGL用于使用eglCreateWindowSurface等函数渲染曲面,然后使用OpenGL ES绘制到该曲面。它的作用类似于GLX / WGL / CGL。

EGL是否可以为您提供支持OpenGL ES 2.0的上下文可能因平台而异,但如果Android设备支持ES 2.0和EGL,您应该能够从EGL获得这样的上下文。请求EGLConfig时,请查看EGL_RENDERABLE_TYPE属性和EGL_OPENGL_ES2_BIT。

http://www.khronos.org/files/egl-1-4-quick-reference-card.pdf

答案 1 :(得分:14)

Android上的EGL似乎没有在任何地方正确解释,但我整理了一些注释here,希望能澄清事情。