Pregunta

Tengo un problema extraño que no puedo averiguar cuando se trata de hacer la mezcla en WebGL. Negro se vuelve totalmente transparente, y todo con tonos de gris en ella se representa también semi transparente. Púsela utilizar el canal alfa como la fuente de la transparencia, y en algunos aspectos funciona, todo lo que no es negro / gris se representa de forma diferente cuando se cambia el valor alfa. pero incluso cuando me puse la alfa a 1, negro aún se muestra transparente.

Esta es la forma en que permitir la transparencia:

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

Y la parte del sombreado que hace la transparencia:

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

donde texColor es el color de la textura que está siendo muestreada, vLightWeight es el sombreado que se calcula en el shader de vértice, y uAlpha el uniforme que utilizo para la transparencia.

¿Fue útil?

Solución

Creo que usted debe tener gl.ONE_MINUS_SRC_ALPHA en la que actualmente tiene gl.ONE .

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top