我在一页中只有几个带摄像头的场景。
其中一个是地图视图。
我可以简单地按功能加载这个场景,但以三种简单的方式删除整个场景?
当我没有显示地图时,我不想保持加载和渲染对象以获得更好的性能。
我发现如何在循环中逐个删除孩子。但我希望有更好的解决方案。
答案 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);
}
如果程序,几何和纹理的数量不稳定,则会引发性能问题和内存泄漏。