我正在添加一些场景清理以消除内存泄漏,我对删除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)
我是否还需要处理箭头本身?这样做的正确方法是什么。
谢谢!
杰夫
答案 0 :(得分:0)
当我尝试将其删除时:
scene.remove(thisArrow);
工作正常。但我认为我得到了内存泄漏,因为我没有处理几何。 (随着时间的推移,我会创造很多箭头,所以这很重要)
执行scene.remove(thisArrow)
应该只需要做。 ArrowHelper
与所有其他人共享相同的几何图形。