2010-12-08 2 views
1

WebGL에서 블렌딩을 시도 할 때 알아낼 수없는 이상한 문제가 있습니다. 검은 색은 완전히 투명하게 렌더링되고 회색 음영은 모두 반투명하게 렌더링됩니다. 투명도의 소스로 알파 채널을 사용하도록 설정했으며, 일부에서는 알파 값을 변경할 때 검정색/회색이 아닌 모든 요소가 다르게 렌더링됩니다. 하지만 알파를 1로 설정하더라도 검정은 여전히 ​​투명하게 표시됩니다.WebGL transparent black

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

그리고 않는 쉐이더의 일부 투명성 : texColor 샘플링되는 텍스처 색이

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

이 vLightWeight은 그림자입니다

이것은 내가 투명성을 가능하게하는 방법이다 이것은 정점 셰이더에서 계산되고, uAlpha는 투명성을 위해 사용하는 유니폼입니다.

답변

3

나는 현재 gl.ONE이 어디 에게 gl.ONE_MINUS_SRC_ALPHA을한다고 생각합니다.

 

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