Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 默认统一(数组)值_Opengl_Glsl_Shader_Fragment Shader - Fatal编程技术网

Opengl 默认统一(数组)值

Opengl 默认统一(数组)值,opengl,glsl,shader,fragment-shader,Opengl,Glsl,Shader,Fragment Shader,我没有为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.

我没有为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值无关紧要)


这在OSX(GL3.2核心配置文件)中运行得非常好。事实上,这比使用带有
const
数组的索引要好得多。我的问题是-这是有效的GLSL语法,而不是依赖于实现的黑客攻击吗?(我目前没有4+访问权限,但我认为答案仍然适用)。另外,关于为什么统一数组可能优于常量数组,有什么想法吗?

是的,统一数组在GL 3.2中允许有默认值。因此,您的语法是有效的


这并不意味着它总是有效的,只是它是有效的。驱动程序错误仍然会困扰你。

太正确了。我发现在
glCompileShader
中,使用
uniform uint
而不是
uniform int
实际上使(LLVM?)解析器崩溃。