【问题标题】:Is OpenGL function loader needed?需要OpenGL函数加载器吗?
【发布时间】:2019-05-26 17:27:33
【问题描述】:

在桌面操作系统上,GLEW、GLAD 等 OpenGL 函数加载器用于在运行时加载函数。但是在安卓上呢?函数是如何加载的?我查看了一些应用程序,它们似乎都依赖于EGLGLES。但是 AFAIK EGL 不是加载库,而是一个接口。嗯,像GLES 这样的接口实际上是一个接口。

这就引出了另一个问题:在桌面上一般不使用EGL,Android 怎么会使用它?

【问题讨论】:

    标签: android opengl-es android-ndk egl


    【解决方案1】:

    回到我使用 android 的时候,你可以链接到 GLES 2.0 库,也可以链接到 GLES 3.0 库,就好像它们为你提供了函数指针一样。是的。如果您使用 GLES3.0,但运行它的手机仅支持 2.0,您的应用将无法加载。为了解决这个问题,我总是链接到 GLES 2.0,并使用 eglGetProcAddress 编写自己的函数加载器来提取 GLES3.0 API(如果可用)。这几乎就是 windows/linux 上的函数加载器的工作方式(使用 wglGetProcAddress 或 glxGetProcAddress)。

    GLES 一直是完整桌面 GL 的精简版。它始终针对完整 API 的较小子集(删除所有遗留的垃圾),这反过来又在一定程度上简化了 OpenGL 驱动程序代码,这反过来应该会减少内存使用并节省一点电池寿命。基本上,它更适合在关注电池寿命的低功耗系统上使用。

    【讨论】:

      【解决方案2】:

      在桌面上通常不使用 EGL 时,Android 怎么会使用它?

      它在 Android 之前广泛用于嵌入式电子设备,因此我怀疑它对于新的智能手机操作系统来说阻力最小,因为所有 GPU 供应商都已经实现了 EGL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多