问题
I just want to store an array of weights that needs to every fragment calculation.
This:
float weights[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);
Just throws this:
ERROR: 0:30: ']' : syntax error syntax error
ERROR: 0:30: ';' : syntax error syntax error
回答1:
From the OpenGL ES SL 1.0 spec, paragraph 4.1.9 Arrays
(p. 24):
There is no mechanism for initializing arrays at declaration time from within a shader.
Note that this has been intentionally left out. According to this post, the OpenGL ES SL version for OpenGL ES 2 is based on OpenGL SL 1.2. The same paragraph (p. 20) contains:
Arrays can have initializers formed from array constructors:
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
回答2:
precision highp float;
const float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);
It's working with Android KitKat version (OpenGL ES 2.0).
来源:https://stackoverflow.com/questions/10467110/how-to-define-constant-array-in-glsl-opengl-es-2-0