Opengl GLSL-结构默认构造函数

Opengl GLSL-结构默认构造函数,opengl,glsl,Opengl,Glsl,我有一个GLSL顶点着色器,它使用结构数组作为统一变量 struct MyStruct { lowp float var1; lowp float var2; }; uniform MyStruct theUniform[16]; 是否有一种方便的方法可以从着色器内部初始化所有数组项中的所有var1、var2,而无需显式定义所有内容?在C++中,一个可以定义MyStult上的默认构造函数,但我不知道GLSL是否有这样的东西。也许有人更了解,但是我想你会有两个选项:在GLSL中

我有一个GLSL顶点着色器,它使用结构数组作为统一变量

struct MyStruct
{
    lowp float var1;
    lowp float var2;
};

uniform MyStruct theUniform[16];

是否有一种方便的方法可以从着色器内部初始化所有数组项中的所有var1、var2,而无需显式定义所有内容?在C++中,一个可以定义MyStult上的默认构造函数,但我不知道GLSL是否有这样的东西。

也许有人更了解,但是我想你会有两个选项:在GLSL中用循环初始化结构,或者在运行着色器之前将默认数据上传到该统一。您也可以在CPU端对其进行初始化,特别是因为统一在某些平台(如OpenGL ES)上是只读的。也许其他人知道得更清楚,但我要说的是,您有两个选择:在GLSL中使用循环初始化结构,或者在运行着色器之前将默认数据上载到统一。因为这是一个统一,您还可以在CPU端对其进行初始化,特别是因为制服在某些平台(如OpenGL ES)上是只读的。