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 вот ссылка на него, на всякий случай.. |
Хотя бы мысли подкиньте какие-нибудь...(
|
sphereMaterial = null;вот это вот - бессмысленно. Объект жив(и находится в памяти) пока на него есть хотябы одна ссылка. Соответственно вам надо копать в этом направлении: где может сохраняться ссылка. Разбираться же за вас - ни у кого желания нет. |
Часовой пояс GMT +3, время: 15:19. |