WebGLを使用して表示する簡単な効果を取得しようとしています。当然、これは、GLSLES1.0仕様で定義されているフラグメントシェーダー言語を使用していることを意味します。
私が使用しているコードは、主に他のソースからコピーされています。正方形を設定し、フラグメントシェーダーと頂点シェーダーを使用してピクセルの色を決定します。次のコードは、白い四角を表示するだけです。
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
ただし、アルファコンポーネントをに変更すると、1.0
代わりに黒い四角が表示されます。
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); // displays a black square
フラグメントシェーダーによって出力される色は、以前の色と組み合わせる必要があると思います。(アルファ値に関係なく)最後の色だけが実際に表示される色として選択されていることを確認するにはどうすればよいですか?
または、注文が間違っている可能性があります。おそらく、フラグメントシェーダーの色と組み合わせて白色を生成する後のフェーズがあります。いずれにせよ、アルファ値を0.5に変更すると灰色の四角が表示されるため、何らかのブレンドが行われていることはわかっています。知りたいのですが、白い色はどこから来ているのですか?そして、どうすればそれを取り除くことができますか?
私が知る限り、問題はブレンディング機能に関係していないことです。コードはここのGitHubにあります。GoogleChromeまたはFirefoxで試してみてください。