2010-12-08 13 views
1

WebGLでブレンドしようとしたときに私が気づくことのできない奇妙な問題があります。黒は完全に透明にレンダリングされ、その中に灰色の色合いを持つものも半透明にレンダリングされます。私はそれを透明のためのソースとしてアルファチャンネルを使用するように設定しましたが、ある点では、アルファ値を変更すると黒/灰色でないものはすべて異なってレンダリングされます。アルファを1に設定しても、黒はまだ透明に表示されます。WebGL透明黒

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

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

性と透明性を行い、シェーダの一部:

texColorがサンプリングされているテクスチャカラーである、vLightWeightはシャドウイングである
gl_FragColor = vec4(texColor.rgb * vLightWeight, texColor.a * uAlpha); 

これは頂点シェーダで計算され、uAlphaは透明に使用するユニフォームです。

答えて

3

私はあなたが現在gl.ONEを持ってgl.ONE_MINUS_SRC_ALPHAを持つべきだと思います。

 

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

関連する問題