我有一个 Mesh 实例,它使用 TubeGeometry 作为它的路径。当我对 TubeGeometry 实例所依据的基础曲线进行更改时,我将从场景中删除网格,然后创建一个新的网格。
场景更新很好,但内存正在爆炸,这告诉我,一旦它离开场景,我就不会正确地释放被移除的网格。
这是我试图用来解除分配的代码:
$.each(parent.children, function (idx, obj) {
parent.remove(obj);
renderer.deallocateObject(obj);
obj.deallocate();
});
其中parent
是 Object3D ,我将网格放入,renderer
是 WebGLRenderer的实例
谁能告诉我我做错了什么以及如何正确地做到这一点?
Here's a Plunk with my currently example.相关代码位于 scene.js 文件第76-86行。请注意,该示例使用 r53 。
答案 0 :(得分:4)
您不会释放已使用的几何
$.each(parent.children, function (idx, obj) {
parent.remove(obj);
renderer.deallocateGeometry(obj.geometry);
renderer.deallocateObject(obj);
obj.geometry.deallocate();
obj.deallocate();
});