我在使用 WebGL 时遇到问题。半透明纹理看起来是半透明的,但它们也会变白,渲染时不考虑纹理中的颜色......
这就是我设置的:
gl.blendFunc(BlendingFactorSrc.SRC_ALPHA, BlendingFactorDest.ONE_MINUS_SRC_ALPHA);
有哪些可能的解决方案?
我在使用 WebGL 时遇到问题。半透明纹理看起来是半透明的,但它们也会变白,渲染时不考虑纹理中的颜色......
这就是我设置的:
gl.blendFunc(BlendingFactorSrc.SRC_ALPHA, BlendingFactorDest.ONE_MINUS_SRC_ALPHA);
有哪些可能的解决方案?
通常,如果白色在 WebGL 场景中意外出现,它是从网页本身的 CSS 背景中混合的(除非您更改它,否则默认为白色)。
换句话说,使用默认的 WebGL 设置,任何将小于 1.0 的 alpha 值写入颜色缓冲区的着色器都会使其<canvas>
自身变为半透明并显示网页的背景。我相信您可以更改WebGLContextAttributes设置以禁用此行为,或者只是确保您的着色器始终输出 1.0 的 alpha 值。