在顶点着色器中,当然允许有限数量的统一存储,我的理解是不同的系统在编译代码方面可能会以略微不同的方式实现 GLSL。我听说过使用常量而不是在顶点着色器代码中写出文字的建议。
例如,下面的代码可能会导致可用的统一存储减少。(我不太明白怎么做。)
示例 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)写出东西。我应该每次都花时间用常量写出东西,还是应该写出文字并且只在顶点着色器无法正确编译时使用常量?
谢谢!