16

我只想存储每个片段计算所需的权重数组。

这:

float weights[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);

只是抛出这个:

ERROR: 0:30: ']' : syntax error syntax error
ERROR: 0:30: ';' : syntax error syntax error
4

2 回答 2

25

来自OpenGL ES SL 1.0 规范,段落4.1.9 Arrays(第 24 页):

没有在声明时从着色器中初始化数组的机制。

请注意,这已被有意省略。根据这篇文章,OpenGL ES 2 的 OpenGL ES SL 版本基于OpenGL SL 1.2。同一段(第 20 页)包含:

数组可以具有由数组构造函数形成的初始化器:

      float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);
      float a[5] = float[](3.4, 4.2, 5.0, 5.2, 1.1);  // same thing
于 2012-05-06T12:50:19.100 回答
5
precision highp float;

const float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);

它适用于 Android KitKat 版本(OpenGL ES 2.0)。

于 2014-07-23T01:20:08.580 回答