我一直在搜索 OpenGL 二进制格式以及它们的实际含义/含义。到目前为止,我还没有取得太大的成功。我知道我可以按如下方式获取格式的数量和集合:
::glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, &values[0]);
,其中 values 是大小整数的 std::vector:
::glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &value);
对于我机器中的驱动程序,这将返回一个二进制格式。这只是一个数字,否则对我来说毫无意义。
所以我的问题如下:
(1) 格式数字/代码代表什么?(2) 是否有标准的 ARB 二进制格式,或者它们都依赖于供应商?(3) 供应商之间是否有共同的格式?(4) 如果有多种格式,你应该如何选择它们?
我有一种模糊的感觉,我必须在给定的机器上预编译和缓存着色器才能利用这一点。我的意思是它不像 DX,您可以在其中将着色器编译器作为构建后事件运行并将它们打包在一起并在任何具有 D3D 的(Windows)机器上使用它们。