class EGL14 是什么意思?
What is the meaning of class EGL14?
我正在 Android 使用 OpenGL。我 grep 了 GLSurfaceView
的代码,我注意到它使用 class EGL10
来与 OpenGL 一起工作。
查看Android平台的Javadoc,我注意到还有一个有趣的class、EGL14
,其方法和常量几乎与EGL10
相同.
那么...EGL10
和 EGL14
有什么区别?
它们只是 EGL 的不同版本,EGL 是 Android.
上使用的 OpenGL window 系统接口
EGL10
对应EGL 1.0,是2003年发布的规范
EGL14
对应EGL 1.4,是2014年发布的规范
这意味着 EGL14
更近。最新规范是 2015 年发布的 EGL 1.5。
不幸的是,这两个版本的 Android Java 绑定完全不同。虽然在功能上 EGL 1.4 是 EGL 1.0 的超集(至少 AFAIK,我没有系统地比较规格),Android 中的 EGL14
是 而不是 的扩展版本 EGL10
API。所以你不能只是混合和匹配两者之间的功能。您几乎必须选择一个并坚持下去。
不用说基于 11 年的发布时间差异,EGL 1.4 大大优于 EGL 1.0。
现在您可能想知道为什么 GLSurfaceView
在其界面中使用 EGL10
引用。我不确定,但我强烈怀疑这是为了向后兼容。 EGL14
仅在 API 级别 17 中添加,而 GLSurfaceView
自 API 级别 3 以来一直存在。为了避免破坏旧应用程序,他们几乎必须引入一个不同的版本与 EGL14
.
有关的 GLSurfaceView
如果你想同时使用GLSurfaceView
和EGL14
,你必须跳过一些障碍。例如,如果你有一个来自 EGL10
接口的 EGLConfig
对象,并且想要相应的 EGLConfig
对象用于 EGL14
接口,我发现的唯一方法是使用 eglGetConfigAttrib()
的 EGL10
版本从原始配置中提取配置 ID,然后使用 eglChooseConfig()
的 EGL14
版本查询 EGL14
配置。
当您开始混合使用这两个版本时,"fun" 增加的是它们大多使用相同的方法名称。这意味着您必须在处理两个版本的源文件中使用限定名称。
我正在 Android 使用 OpenGL。我 grep 了 GLSurfaceView
的代码,我注意到它使用 class EGL10
来与 OpenGL 一起工作。
查看Android平台的Javadoc,我注意到还有一个有趣的class、EGL14
,其方法和常量几乎与EGL10
相同.
那么...EGL10
和 EGL14
有什么区别?
它们只是 EGL 的不同版本,EGL 是 Android.
上使用的 OpenGL window 系统接口EGL10
对应EGL 1.0,是2003年发布的规范EGL14
对应EGL 1.4,是2014年发布的规范
这意味着 EGL14
更近。最新规范是 2015 年发布的 EGL 1.5。
不幸的是,这两个版本的 Android Java 绑定完全不同。虽然在功能上 EGL 1.4 是 EGL 1.0 的超集(至少 AFAIK,我没有系统地比较规格),Android 中的 EGL14
是 而不是 的扩展版本 EGL10
API。所以你不能只是混合和匹配两者之间的功能。您几乎必须选择一个并坚持下去。
不用说基于 11 年的发布时间差异,EGL 1.4 大大优于 EGL 1.0。
现在您可能想知道为什么 GLSurfaceView
在其界面中使用 EGL10
引用。我不确定,但我强烈怀疑这是为了向后兼容。 EGL14
仅在 API 级别 17 中添加,而 GLSurfaceView
自 API 级别 3 以来一直存在。为了避免破坏旧应用程序,他们几乎必须引入一个不同的版本与 EGL14
.
GLSurfaceView
如果你想同时使用GLSurfaceView
和EGL14
,你必须跳过一些障碍。例如,如果你有一个来自 EGL10
接口的 EGLConfig
对象,并且想要相应的 EGLConfig
对象用于 EGL14
接口,我发现的唯一方法是使用 eglGetConfigAttrib()
的 EGL10
版本从原始配置中提取配置 ID,然后使用 eglChooseConfig()
的 EGL14
版本查询 EGL14
配置。
当您开始混合使用这两个版本时,"fun" 增加的是它们大多使用相同的方法名称。这意味着您必须在处理两个版本的源文件中使用限定名称。