OpenGL为什么需要统一变量(而不仅仅是常量)

时间:2014-02-13 19:44:26

标签: opengl uniform

“全局变量和接口块可以使用统一限定符声明。这意味着在渲染基元期间(即:在glDraw *调用期间),在着色器的多次执行之间,值不会发生变化。由用户从OpenGL API设置。 它们是常量,但不是编译时常量(因此不是常量)。“

http://www.opengl.org/wiki/Type_Qualifier_(GLSL)#Storage_qualifier

我想我在问为什么统一变量在编译时也不能保持不变。

1 个答案:

答案 0 :(得分:2)

因为它们不是一成不变的!

它们对于每个渲染调用都是常量,但您可以为每个渲染调用设置一个新值。

例如,您可以设置一个包含颜色值的制服,将其设置为粉红色并绘制您的3D模型,并且每次调用该绘图操作的片段着色器时它将包含一个常量值。但是,您可以使用相同的着色器绘制其他内容,并将该均匀设置为“绿色”