Domanda

Ho un problema strano che io non riesco a capire quando si cerca di fare la miscelazione in WebGL. Nero è resa completamente trasparente, e il tutto con sfumature di grigio in esso è stato reso anche semi trasparente. Ho impostato in modo da utilizzare il canale alfa come sorgente per la trasparenza, e per certi aspetti funziona, ogni cosa che non è nero / grigio è reso in modo diverso quando si cambia il valore alfa. ma anche quando si imposta l'alfa 1, viene ancora visualizzato nero trasparente.

Questo è come mi permetto di trasparenza:

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

E la parte dello shader che fa della trasparenza:

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

dove texColor è il colore della texture che viene campionata, vLightWeight è l'ombra che viene calcolato nel vertex shader, e uAlpha l'uniforme che io uso per la trasparenza.

È stato utile?

Soluzione

Penso che si dovrebbe avere gl.ONE_MINUS_SRC_ALPHA in cui si dispone attualmente di gl.ONE .

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top