3

WebGLでブレンディングを実行しようとすると、理解できないという奇妙な問題があります。黒は完全に透明にレンダリングされ、グレーの色合いが含まれるすべてのものも半透明にレンダリングされます。透明度のソースとしてアルファチャネルを使用するように設定しましたが、いくつかの点で機能します。アルファ値を変更すると、黒/グレー以外のすべてのレンダリングが異なります。ただし、アルファを1に設定しても、黒は透明に表示されます。

これが私が透明性を有効にする方法です:

this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE);
this.gl.enable(this.gl.BLEND);
this.gl.disable(this.gl.DEPTH_TEST);

そして、透明度を行うシェーダーの部分:

   gl_FragColor = vec4(texColor.rgb * vLightWeight, texColor.a * uAlpha);

ここで、texColorはサンプリングされているテクスチャカラー、vLightWeightは頂点シェーダーで計算されているシャドウイング、uAlphaは透明度に使用するユニフォームです。

4

1 に答える 1

4

現在 gl.ONE がある場所に gl.ONE_MINUS_SRC_ALPHA が必要と思います。

  gl.blendFunc( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA );

于 2011-01-02T11:42:10.753 に答える