У меня есть вопрос, который беспокоил меня в течение некоторого времени.Управление памятью с использованием глобальных массивов объектов THREE.JS
Я использую библиотеку tr.js webgl для рендеринга большой сцены с множеством текстур и сеток.
Этот вопрос не обязательно связан с webgl, но больше массивов javascript и управления памятью.
я в основном делаю это:
var modelArray = [];
var model = function(geometry,db_data){
var tex = THREE.ImageUtils.loadTexture('texture.jpg');
var mat = new THREE.MeshPhongMaterial({map:tex})
this.mesh = new THREE.Mesh(geometry,mat);
this.db = db_data;
scene.add(this.mesh);
};
function loadModels(model_array){
for(i=0;i<geometry.length;i++){
modelArray.push(new model(model_array[i]['geometry'],model_array[i]['db_info']));
}
}
loadModels();
Могу ли я быть неэффективна здесь? Я существенно увеличиваю объем используемой памяти, так как у меня есть сетка, загруженная в сцену и массив. Или объект модели (в частности, model.mesh) в массиве просто указывает на единичный блок памяти?
Должен ли я просто создать массив идентификаторов сетки и ссылаться на объекты сцены, или это нормально, чтобы добавить меш в сцену и массив?
Спасибо заранее, и я надеюсь, что я был достаточно ясен.
Вы реорганизованы ради этого или столкнулись с проблемой производительности или памяти? – alex
Использование моей памяти для каждой модели экспоненциально выше. Не только память gpu, но и память вкладок браузера, которая просто кажется высокой. Вот почему. Мне все еще интересно узнать, является ли назначение объектов массиву серьезным ударом памяти или просто создает ссылку на объект (в данном случае меш), который очень велик. – Hobbes
У меня возникли проблемы с памятью вне темы, связанные с сохранением сохранности памяти через обновления, которые, как я думал, были невозможны. – Hobbes