简体   繁体   中英

How to define constant array in GLSL (OpenGL ES 2.0)?

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

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 
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).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM