在台式机操作系统上,诸如GLEW,GLAD等的OpenGL函数加载器用于在运行时加载函数。但是在Android上呢?如何加载函数?我看过一些应用程序,它们似乎都依赖于EGL
和GLES
。但是AFAIK EGL
不是加载库,而是接口。好吧,作为GLES
的接口的接口实际上是一个接口。
这就引出了另一个问题:通常在台式机上不使用EGL
时,Android如何使用它?
最佳答案
回到当我稍微使用android时,您可以链接到GLES 2.0库,也可以链接到GLES 3.0库,就好像它们为您提供了函数指针一样。 ish。如果您使用的是GLES3.0,但您的手机仅在受支持的2.0上运行,则不会加载您的应用。要解决此问题,我始终链接到GLES 2.0,并使用eglGetProcAddress编写了自己的函数加载器,以提取GLES3.0 API(如果可用)。这几乎就是Windows / Linux上的函数加载器的工作方式(使用wglGetProcAddress或glxGetProcAddress)。
GLES一直是功能完善的桌面GL的精简版本。它始终以完全使用的API的较小子集为目标(删除了所有旧有的残篇),这反过来在某种程度上简化了OpenGL驱动程序代码,这反过来应该减少内存使用并节省一点电池寿命。基本上,它更适合用于需要电池寿命的低功率系统。