它们在NV gpu程序4扩展中定义在这里https://www.opengl.org/registry/specs/NV/gpu_program4.txt
这是将常量数据传输到程序的唯一方法吗?当我们使用GLSL时,这个被制服取代了吗?
我还在某处看到了glProgramBufferParameter,更困惑了。这是用于着色器存储缓冲区吗?
它们在NV gpu程序4扩展中定义在这里
不,它们被这个扩展引用。在ARB_vertex_program
中定义它们这是将常量数据传输到程序的唯一方法吗?
如果你使用的是旧的和尘封的ARB_…_program扩展名,那么可以。如果你使用GLSL,那么制服就是最好的选择。
我还在某处看到了glProgramBufferParameter,并得到了更多
没有名为glProgramBufferParameter的函数。但是有一个函数glProgramBufferParameters*NV
。NV最后很重要,它告诉我们这是一个NVidia特定的扩展。同样,这是用于ARB_…程序风格着色器,而不是用于GLSL;NVidia OpenGL实现内部将GLSL编译为ARB…_program样式的着色器。
无论如何,程序缓冲区对象有一个统一缓冲区对象形式的GLSL对应:https://www.opengl.org/wiki/Uniform_Buffer_Object