2010-12-08 42 views
1

J'ai un problème étrange que je n'arrive pas à comprendre en essayant de faire du blending dans WebGL. Le noir est rendu entièrement transparent, et tout ce qui est gris est rendu semi-transparent. Je l'ai configuré pour utiliser la couche alpha comme source de transparence, et à certains égards cela fonctionne, tout ce qui n'est pas noir/gris est rendu différemment en changeant la valeur alpha. mais même lorsque je mets l'alpha à 1, le noir est toujours affiché transparent.WebGL transparent noir

Voici comment activer la transparence:

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

Et la partie du shader qui fait la transparence:

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

où texColor est la couleur de texture qui est en cours d'échantillonnage, vLightWeight est le shadowing cela est calculé dans le vertex shader, et uAlpha l'uniforme que j'utilise pour la transparence.

Répondre

3

Je pense que vous devriez avoir gl.ONE_MINUS_SRC_ALPHA où vous avez actuellement gl.ONE.

 

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