我有一个奇怪的问题,在尝试在WebGL中进行混合时,我无法弄清楚。黑色是完全透明的,所有灰色阴影的所有东西也被呈现为半透明。我将其设置为使用alpha通道作为透明度的来源,在某些方面起作用,在更改alpha值时,每件事都不是黑色/灰色的东西。但是,即使我将alpha设置为1,黑色仍然显示出透明。

这就是我启用透明度的方式:

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

以及着色器的一部分,具有透明度:

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

如果TexColor是要采样的纹理颜色,则VlightWeight是在顶点着色器中计算的阴影,而Ualpha是我用于透明度的统一。

有帮助吗?

解决方案

我想你应该有 GL.ONE_MINUS_SRC_ALPHA 您目前有什么地方 一个.

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top