禁用 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。
我使用 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。