-1
而不是一个GL程序显式地设置统一的数据,我设置在一个简单的测试“默认”(片段)着色器:默认均匀(阵列)值
uniform vec3 face_rgb[] = vec3[]
(
vec3(0.0, 0.0, 1.0), vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0),
vec3(1.0, 0.0, 1.0), vec3(0.0, 1.0, 1.0), vec3(1.0, 1.0, 0.0),
vec3(0.2, 0.2, 0.2), vec3(0.0, 0.0, 0.0)
);
取决于片段的纹理坐标,一个索引值制定为查找RGB值。 (实际的RGB值是无关紧要的)
这工作得很好用OS X(GL 3.2核心配置文件)。实际上,要比使用带有const
阵列的索引好很多。我的问题是 - 这是有效的GLSL语法,而不是依赖于实现的黑客? (我目前没有4+访问权限,但我认为答案仍然适用)。此外,关于为什么统一可能会超越常数阵列的任何想法?
确实如此。我发现在'glCompileShader'中使用'uniform uint'而不是'uniform int'实际*崩溃*(LLVM?)解析器的情况。 – 2013-05-04 14:59:46