从场景中删除THREE.ArrowHelper()的正确方法是什么?

时间:2014-09-29 20:12:46

标签: javascript three.js

我正在添加一些场景清理以消除内存泄漏,我对删除Arrow助手的正确方法感到有点困惑。 (使用three.js rev 68)

假设我这样做是为了创建它:

var thisArrow = new THREE.ArrowHelper( dir, origin, length, hex, headLength, headWidth ));
scene.add(thisArrow);

当我尝试将其删除时:

scene.remove(thisArrow); 

工作正常。但我认为我得到了内存泄漏,因为我没有处理几何。 (随着时间的推移,我会创造很多箭头,所以这很重要)

但是当试图处理几何体时(知道箭头实际上是一条直线和圆锥体)这样:

thisArrow.line.geometry.dispose();
thisArrow.cone.geometry.dispose():

我收到了webGL错误:

[Warning] WebGL: INVALID_OPERATION: drawElements: no ELEMENT_ARRAY_BUFFER bound ([native code], line 0)

我是否还需要处理箭头本身?这样做的正确方法是什么。

谢谢!

杰夫

1 个答案:

答案 0 :(得分:0)

  

当我尝试将其删除时:

scene.remove(thisArrow);
     

工作正常。但我认为我得到了内存泄漏,因为我没有处理几何。 (随着时间的推移,我会创造很多箭头,所以这很重要)

执行scene.remove(thisArrow)应该只需要做。 ArrowHelper与所有其他人共享相同的几何图形。