'一流数组':不支持

时间:2015-04-19 18:53:34

标签: arrays webgl

以下代码:

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中使用数组吗?

1 个答案:

答案 0 :(得分:2)

你当然可以在GLSL中使用数组但是支持是有限的。 OpenGL ES Shading Language 1.0 spec中记录了您可以和不能使用数组的所有内容。我冒昧地复制和放弃为你的问题粘贴相关的段落 - 但是有很多关于数组的问题,所以你可能想要阅读规范。

来自§ 6.1函数定义

  

允许数组作为参数,但不允许作为返回类型。当数组声明为正式时   参数,必须包括它们的大小。通过使用不带数组的名称将数组传递给函数   任何下标或括号,传入的数组参数的大小必须与指定的大小相匹配   形式参数声明。