以下代码:
vec4[8] Get8Neighbours(sampler2D sampler)
{
int i = 0;
vec2 at;
vec4[8] ret;
vec2 step = vec2(1.0) / uResolution.x;
for(float x = -1.0; x < 2.0; x++)
{
for(float y = -1.0; y < 2.0; y++)
{
if(x != 0.0 || y != 0.0)
{
at = vec2(x,y);
ret[i] = texture2D(sampler, vTextureCoord + (at * step));
i++;
}
}
}
return ret;
}
我从标题中收到错误。 WebGL不支持这部分内容?错误消息并没有多大帮助,谷歌也没有给我任何点击。我不能在WebGL中使用数组吗?
答案 0 :(得分:2)
你当然可以在GLSL中使用数组但是支持是有限的。 OpenGL ES Shading Language 1.0 spec中记录了您可以和不能使用数组的所有内容。我冒昧地复制和放弃为你的问题粘贴相关的段落 - 但是有很多关于数组的问题,所以你可能想要阅读规范。
来自§ 6.1函数定义
允许数组作为参数,但不允许作为返回类型。当数组声明为正式时 参数,必须包括它们的大小。通过使用不带数组的名称将数组传递给函数 任何下标或括号,传入的数组参数的大小必须与指定的大小相匹配 形式参数声明。