WebGL negro transparente
-
10-10-2019 - |
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.
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 );