2012-12-31 8 views
5

私はメッシュインスタンスを持っています。TubeGeometryのパスです。 TubeGeometryインスタンスの基になる曲線を変更すると、シーンからメッシュが削除され、新しいメッシュが作成されます。動的に追加されたメッシュのメモリ割り当て解除が機能しない

シーンは正常に更新されますが、メモリが爆発的になり、削除されたメッシュがシーンの外に出た後に正しく割り当て解除されないことがわかります。

$.each(parent.children, function (idx, obj) { 
    parent.remove(obj); 
    renderer.deallocateObject(obj); 
    obj.deallocate(); 
}); 
parent私は がでメッシュ配置 Object3D

、そしてrendererWebGLRendererのインスタンスである:

は、ここで私は割り当てを解除するために使用しようとしているコードです。

私が間違ってやっていることと、これを正しく行う方法を教えてもらえますか?

Here's a Plunk with my currently example.関連するコードは、scene.jsファイル、行76から86です。この例ではr53を使用しています。

答えて

4

すべて**

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

は 'deallocateGeometry'は(私の例では、バージョン)** R53 **のメソッドではなく、新しくリリースされた** R54で使用するジオメトリの割り当てを解除しないでください'WebGLRenderer.deallocate *'メソッドはprivateです。それにもかかわらず、ジオメトリの割り当て解除の欠如を指摘するための+1は、問題と思われる。 – merv

+1

うまくいけば、r54は物事を簡単にします。 'geometry.dispose()'/'' texture.dispose() '/' material.dispose() 'を呼び出すだけです。 – mrdoob

関連する問題