Three.js 替换渲染器后场景不显示

Three.js scene not displaying after replacing renderer

更新:重写了问题以使其更笼统。 (原文here供参考)

我正在 Three.js WebGLRenderer 中渲染场景。然后我需要用新的 WebGLRenderer 替换渲染器(用新的 canvas 替换 canvas)并在新的渲染器中再次渲染相同的场景。

设置大致如下:

cancelAnimationFrame(this.requestID_);
// all other Three.js objects stay same (and I let Three.js create a new canvas)
this.createNewRenderer();
this.animate();

但是,新的渲染器只会渲染空背景,而不是场景网格。 如果我用新计算的网格替换场景网格,渲染又好了。

因此我认为它与网格有关。

因此,为了避免重新计算网格,我尝试在创建新渲染器之前(和之后)根据 this three.js doc 设置所有 geometry.xxxNeedUpdate 和 material.needUpdate 标志,但是这也没用。

我如何才能"force refresh" 网格在新的 WebGLRenderer 中再次显示?

我目前正在通过如下方式刷新场景中的每个网格来解决此问题:

mesh.geometry = mesh.geometry.clone();
mesh.material = mesh.material.clone();
newMesh = mesh.clone();