它们在此处的 NV gpu 程序 4 扩展中定义https://www.opengl.org/registry/specs/NV/gpu_program4.txt
这是将常量数据传输到程序的唯一方法吗?当我们使用 GLSL 时,这是否被制服所取代?
我还在某处看到了 glProgramBufferParameter 并且变得更加困惑。这适用于着色器存储缓冲区吗?
它们在此处的 NV gpu 程序 4 扩展中定义https://www.opengl.org/registry/specs/NV/gpu_program4.txt
这是将常量数据传输到程序的唯一方法吗?当我们使用 GLSL 时,这是否被制服所取代?
我还在某处看到了 glProgramBufferParameter 并且变得更加困惑。这适用于着色器存储缓冲区吗?
它们在此处的 NV gpu 程序 4 扩展中定义
不,它们被此扩展程序引用。定义它们在ARB_vertex_program
这是将常量数据传输到程序的唯一方法吗?
如果您使用的是旧的和尘土飞扬的 ARB_…_program 扩展,那么可以。如果你使用 GLSL,那么 Uniforms 就是你要走的路。
我还在某处看到了 glProgramBufferParameter 并得到了更多
没有名为 glProgramBufferParameter 的函数。然而有一个功能glProgramBufferParameters*NV
。最后的 NV 很重要,它表明这是 NVidia 特定的扩展。同样,这是用于 ARB_...<em> 程序样式着色器,而不是用于 GLSL;NVidia OpenGL 实现在内部将 GLSL 编译为 ARB…_program 样式着色器。
无论如何,程序缓冲区对象具有统一缓冲区对象形式的 GLSL 对应物:https ://www.opengl.org/wiki/Uniform_Buffer_Object