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

前端 未结 2 397
心在旅途
心在旅途 2020-12-15 21:38

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


        
相关标签:
2条回答
  • 2020-12-15 22:24
    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).

    0 讨论(0)
  • 2020-12-15 22:36

    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
    
    0 讨论(0)
提交回复
热议问题