2015-01-26 114 views
0

更新:重新编写问题以使其更一般化。 (原始here仅供参考)更换渲染器后不显示Three.js场景

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

的设置看起来大致是这样的:

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标志,但是这也不起作用。

我能做些什么来“强制刷新”网格以在新的WebGLRenderer中再次显示?

回答

0

我目前通过场景中的每一个清爽网求解如下这样:

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