struct A
{
float radius;
};
A a[ 10 ];
传递的时候就是
for(int i = 0; i < 10; i++)
{
uniform1f(getUniformLocation('a[i].radius'), 666.666);
}
这样挨个传递进去就好
他帮封装了一下 只需要把数组给到value就可以了
struct A
{
vec3 location0;
vec3 location1;
};
A structArray[2];
******************
material.uniforms.structArray.value=[{
location0:new THREE.Vector3(),
location1:new THREE.Vector3(),
},
{
location0:new THREE.Vector3(),
location1:new THREE.Vector3(),
}]
如果这里是 structArray[3];
报错
因为three的逻辑是根据shader里的长度,传递数组的内容进去,如果你js侧的数组只有两个元素,第三个的时候是undefined,那么就拉闸
你外面把数组数量填满,再多给一个breakCount,for循环到那了就break就好了
大家来交流web3D吧