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

编程入门 行业动态 更新时间:2024-10-22 20:39:30
本文介绍了OpenGL二进制程序格式是否标准化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

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

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

,其中值是大小为

的整数的std::向量 ::glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &value);

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

所以我的问题如下:

(1)格式编号/代码表示什么? (2)是否有标准的Arb二进制格式,或者它们都依赖于供应商? (3)供应商之间是否有统一的格式? (4)如果有多种格式,您应该如何选择?

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

推荐答案

(1)格式数字/代码表示什么?

它们表示唯一标识符。

(2)是否有标准的Arb二进制格式,或者它们是否都依赖于供应商?

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

(3)供应商之间是否有通用格式?

(4)如果有多种格式,您应该如何在其中进行选择?

您没有。您不能选择格式。当您调用glGetProgramBinary时,您将获得驱动程序决定的特定格式的二进制数据。当load that program later时,必须将该特定格式与二进制数据一起传递。

我有一种模糊的感觉,我必须在给定的计算机上预编译并缓存着色器才能利用这一点。

是的,这就是该功能的目的:允许您缓存着色器编译。但是,如果驱动程序的着色器版本更改(因此与创建缓存版本时不同),您必须始终确保程序能够工作。因此,您仍然需要能够从文本表单重新生成着色器。

更多推荐

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

本文发布于:2023-11-08 15:55:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1569820.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:制程   格式   OpenGL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!