Opengl es 在GLSL中使用OES_get_程序_二进制文件

Opengl es 在GLSL中使用OES_get_程序_二进制文件,opengl-es,binary,glsl,Opengl Es,Binary,Glsl,我想知道一些使用OES_get_program_binary的例子。换句话说,我想知道一些程序二进制文件真正有用的例子。特别是,我想知道场景。谢谢。的实用程序在扩展规范本身中有非常清楚的概述 在OpenGL ES设备上,使用着色器的常用方法是为每个特定设备预编译着色器。然而,有很多GPU在那里。即使我们假设特定一代中的每个GPU都可以运行相同的预编译着色器(这在许多情况下几乎肯定是不正确的),这仍然意味着您需要为Tegra2使用单独的预编译着色器,一个用于PowerVR系列5 GPU、Power

我想知道一些使用OES_get_program_binary的例子。换句话说,我想知道一些程序二进制文件真正有用的例子。特别是,我想知道场景。谢谢。

的实用程序在扩展规范本身中有非常清楚的概述

在OpenGL ES设备上,使用着色器的常用方法是为每个特定设备预编译着色器。然而,有很多GPU在那里。即使我们假设特定一代中的每个GPU都可以运行相同的预编译着色器(这在许多情况下几乎肯定是不正确的),这仍然意味着您需要为Tegra2使用单独的预编译着色器,一个用于PowerVR系列5 GPU、PowerVR系列5X和高通公司当前的GPU。这还不包括下一代移动GPU,如PowerVR系列6和Tegra 3,以及高通公司下一代推出的任何产品。还有其他我没有提到的GPU

唯一的替代方法是提供文本着色器并根据需要编译它们。正如您可能想象的那样,在低功耗ARM芯片上运行编译器是相当昂贵的

OES_get_程序_二进制文件提供了合理的替代方案。它允许您获取已编译、链接的程序对象,并将已编译的二进制图像保存到本地存储器。这意味着,当您再次加载该程序时,不必从文本着色器加载它,除非版本已更改;您可以直接从二进制文件加载它。这将使应用程序在后续执行时启动得更快