Three.js 禁用WebGL.BLEND不会';行不通

Three.js 禁用WebGL.BLEND不会';行不通,three.js,webgl,Three.js,Webgl,我使用THREE.js并启用alpha画布:(因为我需要在其他东西的基础上构建我的WebGL) 我设置清晰的颜色如下: 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 no

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

我设置清晰的颜色如下:

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
时,它将根据每个材质是否需要混合,为每个材质设置混合调用
gl.enable(gl.BLEND)


除此之外,即使使用混合,您也可以使用非1.0 alpha绘制,这将使用一个可以透视背景的画布。

我将所有材质设置为
transparent=false
blending=THREE。NoBlending
但对象仍然与白色背景混合。可能的原因是什么?你的渲染使用了非0 alpha,如答案中所述。无论这是您的设置还是three.js shader issue blending on,只意味着新像素如何与旧像素混合。禁用后,新像素将直接写入。因此,如果您使用阅读器(0,0,0,0),您将获得透明。如果你渲染(0.5,0,0,5),你会得到50%的透明红色,等等。你想做什么还不清楚。您清除为(0xFFFFFF,0),这是一个透明的背景,因此您当然会看到画布中未渲染的任何位置。无论渲染到哪里,都需要确保使用纯色渲染。混合与此无关。混合仅影响WebGL渲染到画布中的像素与画布中的其他像素。与任何其他HTML元素一样,在浏览器中混合画布及其背景。顺便说一句:0xFFFFFF,0是
_render () {
    renderer.clear();
    gl.disable(gl.BLEND);
    // ... something else doesn't need to be blended, whose alpha value is not 1.0
}