5

我有一个Mesh实例,它使用TubeGeometry作为它的路径。当我对TubeGeometry实例所基于的基础曲线进行更改时,我将从场景中移除网格,然后创建一个新的。

场景更新得很好,但内存正在爆炸,这告诉我,一旦移除的网格离开场景,我就没有正确地释放它。

这是我试图用来解除分配的代码:

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

我将网格放入其中parentObject3D是哪里,并且是WebGLRenderer的一个实例。renderer

谁能告诉我我做错了什么以及如何正确地做到这一点?

这是我当前示例的Plunk相关代码在scene.js文件第 76-86 行。请注意,该示例使用的是r53

4

1 回答 1

4

您不会取消分配使用的几何图形

$.each(parent.children, function (idx, obj) {
  parent.remove(obj);
  renderer.deallocateGeometry(obj.geometry);
  renderer.deallocateObject(obj);
  obj.geometry.deallocate();
  obj.deallocate();
});
于 2012-12-31T10:15:57.053 回答