题
我有一个奇怪的问题,在尝试在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 );
不隶属于 StackOverflow