2015-04-19 40 views
1

對於下面的代碼:「一流陣」:不支持

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中不支持哪部分內容?錯誤信息並沒有太多幫助,Google也沒有給我任何提示。我不能在WebGL中使用數組嗎?

回答

1

你當然可以在GLSL中使用數組,但支持是有限的。在OpenGL ES Shading Language 1.0 spec中記錄了您可以或不可以使用陣列的所有內容。我冒昧地將&複製到你的問題的相關段落 - 但是圍繞數組的問題還有很多,所以你可能想要閱讀規範。

從§6.1函數定義

陣列可以作爲變量,而不是作爲返回類型。當數組聲明爲形式 參數時,必須包含它們的大小。通過使用不帶任何下標或括號的數組名稱將數組傳遞給函數,並且傳入的數組參數的大小必須與 中正式參數聲明中指定的大小相匹配。