mam Mesh instancji, który wykorzystuje TubeGeometry za to ścieżka. Kiedy wprowadzam zmiany w krzywej podstawowej, na której opiera się instancja TubeFeometry, usuwam siatkę ze sceny, a następnie tworzę nową.pamięci dealokacji z dynamicznie dodawane oczka nie Praca
Scena aktualizuje się prawidłowo, ale pamięć eksploduje, co oznacza, że nie usuwam poprawnie usuniętej siatki, gdy nie będzie ona dostępna.
Oto kod próbuję użyć do deallocate:
$.each(parent.children, function (idx, obj) {
parent.remove(obj);
renderer.deallocateObject(obj);
obj.deallocate();
});
gdzie parent
jest Object3D że umieść Mesh w, i renderer
jest instancją WebGLRenderer.
Czy ktoś może mi powiedzieć, co robię źle i jak to zrobić poprawnie?
Here's a Plunk with my currently example. Odpowiedni kod znajduje się w pliku scene.js , linie 76-86. Weź pod uwagę, że w przykładzie użyto r53.
'deallocateGeometry' nie jest to metoda w ** ** R53 (wersja w moim przykładzie), a także w nowo wydany ** ** R54 wszystko metody 'WebGLRenderer.deallocate *' są prywatne. Niemniej jednak +1 za wskazanie braku deallokacji geometrii, co wydaje się być problemem. – merv
Mam nadzieję, że r54 sprawi, że rzeczy będą prostsze. Po prostu wywołaj 'geometry.dispose()' /'texture.dispose() '/ 'material.dispose()' ... – mrdoob