禁用 WebGL gl.BLEND 不起作用

Disabling WebGL gl.BLEND doesn't Work

我使用 THREE.js 并启用 alpha canvas:(因为我需要在其他东西之上构建我的 WebGL)

this.renderer = new THREE.WebGLRenderer({ canvas: this.canvas, antialias: false, alpha: true });

我这样设置清晰的颜色:

this.renderer.setClearColor(0xffffff, 0.0);

每帧:

_render () {
    renderer.clear();
    gl.disable(gl.BLEND);
    // ... something else doesn't need to be blended, whose alpha value is not 1.0
}

我很好奇为什么即使我禁用 gl.BLEND.

其他东西仍然会与白色背景混合

three.js 控制混合。当您调用 renderer.render 时,它会根据 material 是否需要混合来为每个 material 设置混合调用 gl.enable(gl.BLEND)

最重要的是,即使关闭混合,您也可以使用非 1.0 alpha 进行绘制,这最终会使用可以透视背景的 canvas。