Android OpenGL ES 着色器编译器支持
Android OpenGL ES shader compiler support
OpenGL ES 2.0 规范声明“[s]hader 编译器支持是可选的”(参见 "Notes" here)。
是否有Android设备不支持着色器编译?如果是这样,是否有一些着色器编译器可以包含在我的应用程序中以生成二进制文件?或者二进制文件的格式是否也标准化,以便我可以预先编译我的着色器并在需要时将二进制文件与我的应用程序一起发送?或者是否有我可以在我的应用程序中提出的要求,以便它不会提供给没有编译器支持的设备?
自 Android 4.0(实际上是 3.0,但 Google/Android 从未将代码作为不同的产品发布)OpenGL ES 2.0 一直是获得 Android [=22] 所需规范的一部分=] 播放。请参阅:Android 4.0 Compatibility Definition Document and Android Compatibility Definition Document Archive 了解其他版本。
由于 OpenGL ES 2.0 使用以 OpenGL ES 着色器语言编写的着色器,我相信您对着色器编译器 'optional' 的引用是指驱动程序供应商可以提供不同的接口(二进制)来加载着色器. 鉴于没有指定的二进制格式,据我所知,每个人都将 GLSL 文本输入图形驱动程序以在运行时构建着色器。并且不要忘记有多个 GPU vendors/chipsets,因此从开发人员的角度来看,每个特定的二进制文件看起来不太吸引人,至少在多 CPU 架构(ARM、x86、MIPS)多Android 的 GPU(Qualcomm、PowerVR、nVidia)世界。供应商仍然可以对文本进行不同的解释,但至少它会在被禁止的 Khronos 规范内。
由于文本是发送到 GPU 驱动程序的内容,因此性能可能会更好,因为它必须进行翻译、映射、调度等,这导致最近发布了 Vulkan 公告:Android Developer Blog Vulkan Announcement。如果您查看规范,它描述了一种中间二进制格式,但可能至少需要一年时间才能实现消费者可用的实现。
除非您打算支持 Gingerbread (2.3) 及更低版本 - 您应该能够依赖 OpenGL ES 2.0 的可用性。
OpenGL ES 2.0 规范声明“[s]hader 编译器支持是可选的”(参见 "Notes" here)。
是否有Android设备不支持着色器编译?如果是这样,是否有一些着色器编译器可以包含在我的应用程序中以生成二进制文件?或者二进制文件的格式是否也标准化,以便我可以预先编译我的着色器并在需要时将二进制文件与我的应用程序一起发送?或者是否有我可以在我的应用程序中提出的要求,以便它不会提供给没有编译器支持的设备?
自 Android 4.0(实际上是 3.0,但 Google/Android 从未将代码作为不同的产品发布)OpenGL ES 2.0 一直是获得 Android [=22] 所需规范的一部分=] 播放。请参阅:Android 4.0 Compatibility Definition Document and Android Compatibility Definition Document Archive 了解其他版本。
由于 OpenGL ES 2.0 使用以 OpenGL ES 着色器语言编写的着色器,我相信您对着色器编译器 'optional' 的引用是指驱动程序供应商可以提供不同的接口(二进制)来加载着色器. 鉴于没有指定的二进制格式,据我所知,每个人都将 GLSL 文本输入图形驱动程序以在运行时构建着色器。并且不要忘记有多个 GPU vendors/chipsets,因此从开发人员的角度来看,每个特定的二进制文件看起来不太吸引人,至少在多 CPU 架构(ARM、x86、MIPS)多Android 的 GPU(Qualcomm、PowerVR、nVidia)世界。供应商仍然可以对文本进行不同的解释,但至少它会在被禁止的 Khronos 规范内。
由于文本是发送到 GPU 驱动程序的内容,因此性能可能会更好,因为它必须进行翻译、映射、调度等,这导致最近发布了 Vulkan 公告:Android Developer Blog Vulkan Announcement。如果您查看规范,它描述了一种中间二进制格式,但可能至少需要一年时间才能实现消费者可用的实现。
除非您打算支持 Gingerbread (2.3) 及更低版本 - 您应该能够依赖 OpenGL ES 2.0 的可用性。