2010-12-08 21 views
1

Ich habe ein seltsames Problem, das ich nicht herausfinden kann, wenn ich versuche, in WebGL zu mischen. Schwarz wird vollständig transparent wiedergegeben, und alles mit Grautönen wird auch halbtransparent wiedergegeben. Ich habe es so eingestellt, dass der Alpha-Kanal als Quelle für die Transparenz verwendet wird, und in gewisser Hinsicht funktioniert alles, was nicht schwarz/grau ist, wenn der Alpha-Wert geändert wird. Aber selbst wenn ich Alpha auf 1 setze, wird Schwarz immer noch transparent angezeigt.WebGL transparent schwarz

Dies ist, wie ich Transparenz ermöglichen:

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

Und den Teil des Shader, der Transparenz tut:

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

wo TexColor die Textur Farbe, die abgetastet wird, ist vLightWeight die Abschattung das wird im Vertex-Shader berechnet und uAlpha die Uniform, die ich für die Transparenz verwende.

Antwort

3

Ich glaube, Sie gl.ONE_MINUS_SRC_ALPHA haben sollte wo Sie sich gerade gl.ONE haben.

 

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