三个js删除整个场景

时间:2016-01-06 12:15:44

标签: three.js

我在一页中只有几个带摄像头的场景。

其中一个是地图视图。

我可以简单地按功能加载这个场景,但以三种简单的方式删除整个场景?

当我没有显示地图时,我不想保持加载和渲染对象以获得更好的性能。

我发现如何在循环中逐个删除孩子。但我希望有更好的解决方案。

1 个答案:

答案 0 :(得分:1)

仅从场景中删除三个对象不足以从内存中删除它们。你必须在对象上调用dispose()方法。几何形状,材料和纹理。

https://github.com/mrdoob/three.js/issues/5175

在您调用dispose并删除方法后,请执行此类诊断(this.renderer是您的THREE.Renderer):

if (this.renderer && (this.renderer.info.memory.geometries || this.renderer.info.memory.programs || this.renderer.info.memory.textures)) {
        loge("VIEW.clear: geometries=" + this.renderer.info.memory.geometries + " programs=" + this.renderer.info.memory.programs + " textures=" + this.renderer.info.memory.textures);
    }

如果程序,几何和纹理的数量不稳定,则会引发性能问题和内存泄漏。