gpt4 book ai didi

opengl - OpenGL 二进制程序格式是否标准化?

转载 作者:行者123 更新时间:2023-12-02 00:09:03 24 4
gpt4 key购买 nike

我一直在谷歌上搜索 OpenGL 二进制格式及其实际含义。到目前为止我还没有取得太大的成功。我知道我可以按如下方式获取数量和格式集:

::glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, &values[0]);

,其中 value 是大小为整数的 std::vector:

::glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &value);

对于我机器中的驱动程序,这将返回单个二进制格式。这只是一个数字,否则对我来说毫无意义。

所以我的问题如下:

(1) 格式数字/代码代表什么?(2) 是否有标准的 ARB 二进制格式,或者它们都依赖于供应商吗?(3) 供应商之间是否有通用的格式?(4)如果有多种格式,该如何选择?

我有一种模糊的感觉,我必须在给定机器上预编译和缓存着色器才能利用这一点。我的意思是,它不像 DX,您可以将着色器编译器作为构建后事件运行,并将它们打包在一起,并在任何具有 D3D 的 (Windows) 机器上使用它们。

最佳答案

(1) What do the format numbers/codes represent?

它们代表唯一标识符。

(2) Are there standard ARB binary formats, or are they all vendor dependent?

它们都是特定于供应商的。

(3) Is there a common format between vendors?

没有。

(4) If there are multiple formats, how are you supposed to choose between them?

你不知道。您无法选择格式。当您调用glGetProgramBinary时,您将获得由驱动程序决定的特定格式的二进制数据。当你 load that program later ,您必须使用二进制数据传递该特定格式。

I have a vague feeling I have to pre-compile and cache shaders on a given machine in order to take advantage of this.

是的,这就是该功能的目的:允许您缓存着色器编译。但您必须始终确保您的程序在驱动程序的着色器版本发生变化(因此与您创建缓存版本时不同)时仍能正常工作。因此,您仍然需要能够从文本形式重建着色器。

关于opengl - OpenGL 二进制程序格式是否标准化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com