动态添加网格的内存释放不起作用

时间:2012-12-31 06:59:39

标签: javascript memory-leaks webgl three.js

我有一个 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

1 个答案:

答案 0 :(得分:4)

您不会释放已使用的几何

$.each(parent.children, function (idx, obj) {
  parent.remove(obj);
  renderer.deallocateGeometry(obj.geometry);
  renderer.deallocateObject(obj);
  obj.geometry.deallocate();
  obj.deallocate();
});