在顶点着色器中,有一定数量的统一存储空间可用,我了解到不同的系统可能会以稍微不同的方式实现GLSL来编译代码。我听说推荐在顶点着色器代码中使用常量而不是写出字面量。
例如,以下代码可能会导致可用的统一存储空间减少。(我不太明白为什么。)
示例1:使用字面量
据我理解,每次使用
有人了解这背后的争论吗?我没有代码问题,只是想正确理解这些内容,以便将来不会出现问题。
我的正式问题如下:特别是对于使用OpenGL ES 2.0的iOS平台,是使用文字(示例1)还是常量(示例2)写出这个东西的最佳实践。我应该花时间每次都用常量写出来,还是只有在顶点着色器无法编译时才使用常量?
谢谢!
例如,以下代码可能会导致可用的统一存储空间减少。(我不太明白为什么。)
示例1:使用字面量
vec4 myVector = vec4(1.0, 0.0, 0.0, 1.0);
据我理解,每次使用
1.0
或0.0
都可能占用一定的统一存储空间。因此,建议将先前的代码更改为以下形式:示例2:使用常量而不是字面值。const float zero = 0.0;
const float one = 1.0;
vec4 myVector = vec4(one, zero, zero, one);
有人了解这背后的争论吗?我没有代码问题,只是想正确理解这些内容,以便将来不会出现问题。
我的正式问题如下:特别是对于使用OpenGL ES 2.0的iOS平台,是使用文字(示例1)还是常量(示例2)写出这个东西的最佳实践。我应该花时间每次都用常量写出来,还是只有在顶点着色器无法编译时才使用常量?
谢谢!