フラグメントシェーダのコンパイルに問題があります。私はこのエラーを取得しておいてください。gl_FragDataはゼロにする必要があります
Uncaught Error: Fragment Shader Compiler Error: ERROR: 0:21: '[' :
array index for gl_FragData must be constant zero ERROR: 0:21: '[' :
array index for gl_FragData must be constant zero ERROR: 0:21: '[' :
array index for gl_FragData must be constant zero
これはコードです:
#ifdef GL_EXT_draw_buffers
#extension GL_EXT_draw_buffers : require
#endif
#ifdef GL_ES
precision highp float;
#endif
void main() {
gl_FragData[0] = vec4(1.,2.,3.,4.);
gl_FragData[1] = vec4(1.,2.,3.,4.);
gl_FragData[2] = vec4(1.,2.,3.,4.);
gl_FragData[3] = vec4(1.,2.,3.,4.);
}
私は(フレームバッファに取り付けた4つのテクスチャ付き)gl_FragColor
を設定するが、しようとしている場合は、全体のセットアップが正常に動作します上のコードを実行すると(出力先にバッファをインデックスする)、コンパイルされないようです。私は拡張機能を使用してWebGL1でうまく動作するのを見てきました。私はWebGL2を使用しているので、多分この文脈では何かが違うでしょうか? (私はそれをChromeの最新バージョンで試しています)。
WebGL2を使用している場合は、GLSL 3.3標準に合わせて構文を根本的に変更する必要があると思います。ここを見てください:http://io7m.com/documents/fso-tta/ 'GLSL 3.30 「OpenGL [3.3,4.4]およびOpenGL ES 3.0では、名前付き出力をレイアウト修飾子を使用して番号付き描画バッファに関連付ける、名前付きフラグメントシェーダ出力に割り当てます」と説明しています。 –
WebGL2はGLSL 3.3をサポートしていません。 [GLSL ES 3.0](https://www.khronos.org/registry/OpenGL/specs/es/3.0/GLSL_ES_Specification_3.00.pdf)をサポートしています。 GLSL 3.3仕様を参照するのは非常に混乱します。なぜなら、それは間違った仕様であるため、何も動作しないことが分かります。 – gman