2
“全局变量和接口块可以用统一修饰符来声明,这意味着在渲染基元时多次执行着色器之间的值不会发生变化(即:在glDraw *调用期间),这些值由用户从OpenGL API设置 它们是常量,但不是编译时常量(因此不是const)。OpenGL为什么需要统一变量(而不是常量)
http://www.opengl.org/wiki/Type_Qualifier_(GLSL)#Storage_qualifier
我想我问为什么统一的变量不能仅仅是在编译时恒定。
幽默,即使它们是恒定的,也不会改变任何东西。常量变量可能会使用与统一变量相同的存储池。事实上,如果您曾经在NV驱动程序中链接过GLSL程序中列举了制服列表,您会注意到它会重新命名常量,这些常量沿'_ _0''的行改变,并将它们分配到统一的位置。 –