代码之家  ›  专栏  ›  技术社区  ›  xcesco

EGL14类的含义是什么?

  •  7
  • xcesco  · 技术社区  · 10 年前

    我正在用OpenGL开发Android。我把代码 GLSurfaceView 我注意到它使用了类 EGL10 使用OpenGL。

    看着Android平台的Javadoc,我注意到还有一个有趣的类, EGL14 ,方法和常数几乎相同 乙二醇10 .

    那么 乙二醇10 乙二醇14 ?

    1 回复  |  直到 6 年前
        1
  •  9
  •   Reto Koradi    10 年前

    它们只是EGL的不同版本,EGL是Android上使用的OpenGL窗口系统界面。

    • EGL10 对应于2003年发布的EGL 1.0。
    • EGL14 对应于 EGL 1.4 ,这是2014年发布的规范。

    这意味着 乙二醇14 最近。最新的规范是2015年发布的EGL 1.5。

    不幸的是,这两个版本的Android Java绑定截然不同。虽然功能上EGL 1.4是EGL 1.0的超集(至少AFAIK,我没有系统地比较规格), 乙二醇14 在Android中是 的扩展版本 乙二醇10 应用程序编程接口。因此,您不能仅仅在两者之间混合和匹配功能。你几乎必须选择一个,并坚持下去。

    不用说,基于11年的发布时间差异,EGL1.4大大优于EGL1.0。

    现在你可能想知道为什么 GLSurfaceView 使用 乙二醇10 接口中的引用。我不确定,但我强烈怀疑这是为了向后兼容。 乙二醇14 仅在API级别17中添加,而 GL表面视图 自API级别3以来就一直存在。为了避免破坏旧的应用程序,他们几乎必须引入不同版本的 GL表面视图 乙二醇14 .

    如果您想使用 GL表面视图 乙二醇14 一起,你必须跳过一些障碍。例如,如果您有 EGLConfig 对象 乙二醇10 接口,并需要相应的 EGL配置 对象用于 乙二醇14 接口,我找到的唯一方法是使用 乙二醇10 的版本 eglGetConfigAttrib() ,然后查询 乙二醇14 使用 乙二醇14 的版本 eglChooseConfig() .

    当你开始混合这两个版本时,增加“乐趣”的是它们大多使用相同的方法名。这意味着您必须在处理两个版本的源文件中使用限定名称。