(经验丰富的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功能;我在这里缺少一些基本的东西吗?)
答案 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,希望能澄清事情。