我已尝试过此代码。
varying vec2 blurCoordinates[2][2];
但它导致错误:
顶点着色器编译失败。 错误:0:10:' [' :语法错误:语法错误 错误:1个编译错误。没有生成代码。
答案 0 :(得分:1)
正如genpfault的回答中所提到的,GLSL从一开始就不支持多维数组。
扩展程序GL_ARB_arrays_of_arrays
确实提供了您要查找的功能。它在版本4.3中被提升为OpenGL核心功能,因此从GLSL 4.30开始,您可以在不依赖扩展的情况下使用它。
答案 1 :(得分:1)
没有#version
指令暗示#version 100
禁止使用多维数组:
Section 4.1.9, "Arrays" (page 24):
通过声明一个名称后跟括号([])包含大小,可以将相同类型的变量聚合到数组中。数组大小必须是大于零的整数常量表达式(参见第4.3.3节“积分常量表达式”)。使用大于或等于其声明大小的整数常量表达式索引数组是非法的。使用负常量表达式索引数组也是非法的。在函数声明中声明为形式参数的数组必须指定大小。 只能声明一维数组。所有基本类型和结构都可以组成数组。
如果使用#version 320 es
,则可以声明数组数组:
Section 4.1.9, "Arrays" (page 40):
通过声明一个名称后跟括号([])包含可选大小,可以将相同类型的变量聚合到数组中。如果存在,则数组大小必须是大于零的常量整数表达式(请参见第4.3.3节“常量表达式”)。 size参数的类型可以是有符号或无符号整数,类型的选择不会影响结果数组的类型。数组只有一个维度(“[]”中的单个数字),但是,可以声明数组的数组。任何类型都可以形成一个数组。
...