web-dev-qa-db-ja.com

GLSL(OpenGL ES 2.0)で定数配列を定義する方法は?

すべてのフラグメント計算に必要な重みの配列を格納したいだけです。

この:

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
15
Geri

OpenGL ES SL 1.0仕様 から、段落4.1.9 Arrays(p。24):

シェーダー内から宣言時に配列を初期化するメカニズムはありません。

これは意図的に省略されていることに注意してください。 この投稿 によると、OpenGL ES2のOpenGLES SLバージョンは OpenGL SL 1.2 に基づいています。同じ段落(p。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
20
Stefan Hanke
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)で動作します。

2
ivivaldi