1234
= 尺寸
f
= 浮点数
i
= 整数
v
如果出现在最后一个字符,表示该命令接受一组值(向量)而不是一系列单独的参数
对于非数组uniform,v
和non v
版本的uniform函数之间唯一的区别就是如何向其提供数据:
uniform1fv(loc,[3.14159])
和 uniform1f(loc,3.14159)
的唯一区别在于:
uniform3fv(loc,[.5,1.,.5])
和 uniform3f(loc,.5,1.,.5)
的唯一区别在于:
但对于数组uniform,您可以使用v
函数设置整个数组
在着色器中
uniform float someArray[10];
在JavaScript中
// at init time
var location = gl.getUniformLocation(prg, "someArray");
// at render time
var arrayWith10Values = [5, 4, 1, 3, 4, 5, 12, 0.1, 2, -1];
gl.uniform1fv(location, arrayWith10Values);
为了使用非
v
函数完成此操作,您必须查找每个位置。
var location0 = gl.getUniformLocation(prg, "someArray[0]");
var location1 = gl.getUniformLocation(prg, "someArray[1]");
var location2 = gl.getUniformLocation(prg, "someArray[2]");
var location3 = gl.getUniformLocation(prg, "someArray[3]");
var location4 = gl.getUniformLocation(prg, "someArray[4]");
...etc...
gl.uniform1f(location0, value0);
gl.uniform1f(location1, value1);
gl.uniform1f(location2, value2);
gl.uniform1f(location3, value3);
gl.uniform1f(location4, value4);
...etc...