GLSL 和 CG 工具包根本不足以满足我的需求,看来我唯一的选择就是编写自己的编译器。我基本上需要一个二进制着色器结构图,这样我就可以自己从脚本中构建它。
编辑:好的,我想我正在寻找的是 arb 程序集的二进制结构。
GLSL 和 CG 工具包根本不足以满足我的需求,看来我唯一的选择就是编写自己的编译器。我基本上需要一个二进制着色器结构图,这样我就可以自己从脚本中构建它。
编辑:好的,我想我正在寻找的是 arb 程序集的二进制结构。
如何构建我自己的 opengl 着色器编译器?
你没有。至少,不是按照你的意思。
OpenGL 没有定义二进制或汇编交换格式。OpenGL 本身直接将 GLSL 编译成对象。即使您可以查询二进制数据,OpenGL 也没有提供解释二进制数据实际存储什么的方法。它依赖于实现。NVIDIA 和 AMD 将存储不同的信息,这将与英特尔存储的不同。每一代硬件都会发生变化。等等。
您可以编写生成GLSL的编译器。但仅此而已。
如果您愿意坚持使用 NVIDIA,他们一直很擅长使 ARB 汇编语言保持最新。但显然,任何这样的代码都是 NVIDIA 独有的。