如何在结构GLSL中初始化数组
我尝试在结构中初始化数组,如下所示:如何在结构GLSL中初始化数组,glsl,shader,Glsl,Shader,我尝试在结构中初始化数组,如下所示: struct myStruct { vec3 data[20] = vec3[20] (vec3(1, 1, 1), vec3( 1, -1, 1), vec3(-1, -1, 1), vec3(-1, 1, 1), vec3(1, 1, -1), vec3( 1, -1, -1), vec3(-1, -1, -1), vec3(-1, 1, -1),
struct myStruct {
vec3 data[20] = vec3[20] (vec3(1, 1, 1), vec3( 1, -1, 1), vec3(-1, -1, 1), vec3(-1, 1, 1),
vec3(1, 1, -1), vec3( 1, -1, -1), vec3(-1, -1, -1), vec3(-1, 1, -1),
vec3(1, 1, 0), vec3( 1, -1, 0), vec3(-1, -1, 0), vec3(-1, 1, 0),
vec3(1, 0, 1), vec3(-1, 0, 1), vec3( 1, 0, -1), vec3(-1, 0, -1),
vec3(0, 1, 1), vec3( 0, -1, 1), vec3( 0, -1, -1), vec3( 0, 1, -1));
};
但我得到了这个错误:
ERROR: 0:84: '=' : syntax error: syntax error
可以这样做吗?
struct
启动类型规范,而不是变量声明。必须声明变量并使用结构构造函数(请参阅):
看 用户定义的类型可以通过使用struct关键字将其他已定义的类型聚合到一个结构中来创建。比如说,
struct keyword. For example,
struct light {
float intensity;
vec3 position;
} lightVar;
可以在声明时使用构造函数初始化结构,如第5.4.3节“结构”所述
“建设者”
看 一旦定义了一个结构,并为其类型指定了一个名称,就可以使用相同名称的构造函数 构造该结构的实例。例如:
struct light {
float intensity;
vec3 position;
};
light lightVar = light(3.0, vec3(1.0, 2.0, 3.0));
struct light {
float intensity;
vec3 position;
};
light lightVar = light(3.0, vec3(1.0, 2.0, 3.0));