在WebGL2中新增了Uniform Block写法
着色器与应用程序之间,或者着色器各阶段之间共享的变量可组织为变量块(Uniform Block)的形式,并且有时候必须采取这种形式。Uniform变量可以使用Uniform块,输入输出变量可以使用in和out块,着色器的存储缓存可以使用buffer block
Uniform Block的写法
//采用下面的写法,访问块成员是使用v1、v2
uniform b { //限定符可以为uniform、in、out或者buffer
vec4 v1; //块中的变量列表
vec4 v2;
}
//采用下面的写法,访问块成员是使用name.v1、name2.v2
uniform b { //限定符可以为uniform、in、out或者buffer
vec4 v1; //块中的变量列表
vec4 v2;
} name;
总之,在block开始部分的名称(上面代码中的b)对应于外部访问时的接口名称,而结尾部分的名称(

WebGL2 引入了 Uniform Block,允许着色器与应用程序间共享变量。Uniform Block 可以通过变量块的形式组织,包括Uniform、输入输出变量和着色器的存储缓存。在块中,名称对应外部接口,而成员变量通过在着色器代码中访问。布局控制允许设置变量排列方式,可以全局或针对特定块设定。访问块中的uniform变量时,块名称不作为变量父名称,同名变量在不同块中会导致编译错误,访问时不强制使用块名称。
最低0.47元/天 解锁文章
364

被折叠的 条评论
为什么被折叠?



