Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2014, 10:17
Новичок на форуме
Отправить личное сообщение для Bo6JI9 Посмотреть профиль Найти все сообщения от Bo6JI9
 
Регистрация: 20.01.2014
Сообщений: 4

webGL, three.js. Проблемы с заполением оперативной памяти при загрузке текстур
Пишу просмотрщик панорам, в общем у меня есть функция, она грузит текстурки добавляет к сцене и добавляет в массив, так она жрет на каждую панораму(15мб картинка) где-то по 150мб оперативы и после перехода от одной панорамы к другой он просто занимает еще 150мб, и так, если их штук 10, получается 150+150+150....потом страница ломается
function actionRerender(num) {

loaded = false;
d.querySelector('.loader').style.display = 'block';
container.style.opacity = 0;

var object = globalData[num],
sphereMaterial;

if (sphereMaterialCache[object.name] === undefined) {
sphereMaterial = new THREE.MeshBasicMaterial({
map: THREE.ImageUtils.loadTexture(globalData[num].texture),
side: THREE.BackSide
});
sphereMaterialCache[object.name] = sphereMaterial;
}

mesh.material = sphereMaterialCache[object.name];
}


Если я меняю так, чтобы не добавлялось в массив и каждый раз зануляю переменную sphereMaterial, он продолжает занимать оперативку, но при повторном открытии одной и той же панорамы так же занимает еще 150мб
function actionRerender(num) {

loaded = false;
d.querySelector('.loader').style.display = 'block';
container.style.opacity = 0;

var object = globalData[num],
sphereMaterial;
sphereMaterial = new THREE.MeshBasicMaterial({
map: THREE.ImageUtils.loadTexture(globalData[num].texture),
side: THREE.BackSide
});

mesh.material = sphereMaterial;
sphereMaterial = null;
}

Что может изменить, чтобы предыдущая панорама как-то удалялась из памяти и не занимала оперативку?

http://vk.com/doc13433889_301525253 вот ссылка на него, на всякий случай..
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2014, 13:21
Новичок на форуме
Отправить личное сообщение для Bo6JI9 Посмотреть профиль Найти все сообщения от Bo6JI9
 
Регистрация: 20.01.2014
Сообщений: 4

Хотя бы мысли подкиньте какие-нибудь...(
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2014, 13:59
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

sphereMaterial = null;
вот это вот - бессмысленно.
Объект жив(и находится в памяти) пока на него есть хотябы одна ссылка. Соответственно вам надо копать в этом направлении: где может сохраняться ссылка.
Разбираться же за вас - ни у кого желания нет.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37