我正在优化glUniform
次来电。在某些着色器中,我有很多vec2统一变量。
最初他们的声明看起来像是
uniform vec2 foo;
uniform vec2 bar;
...
优化后我声明了以下内容:
uniform vec2 v2params[42];
vec2 foo = v2params[0];
vec2 bar = v2params[0];
...
在这种情况下,GLSL 130不允许将foo, bar, ...
限定为const
,但在进一步的代码中永远不会修改它们。
现代GLSL编译器会猜测它们的常量并消除复制吗?或者我应该使用v2params[0]
而不是foo
之类的值来确保没有复制?后者将显着降低代码可读性。
PS。我仅限于OpenGL 2和WebGL 1,因此UBO不可用。