Question

J'ai un problème étrange que je ne peux pas comprendre en essayant de faire le mélange dans WebGL. Noir est rendu totalement transparent, et tout avec des nuances de gris, il est rendu aussi semi-transparente. Je l'ai mis à utiliser le canal alpha comme source de transparence, et à certains égards, cela fonctionne, tout ce qui n'est rendu noir / gris différemment lorsque vous changez la valeur alpha. mais même lorsque je place l'alpha à 1, le noir est toujours affiché transparent.

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 la texture qui est en cours d'échantillonnage, vLightWeight est l'observation qui est calculé dans le vertex shader, et uAlpha l'uniforme qui me sert à la transparence.

Était-ce utile?

La solution

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  );

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top