Я разрабатываю приложение в cocos2d. Архитектура приложения довольно проста: Главное меню, из которого вы можете выбрать один из шести подменю. После запуска подменю. В главном меню много текстур в высоком разрешении (для Retina iPads) после загрузки всех текстур потребовалось приблизительно 408 МБ (максимум 450 МБ, потому что я использую метод removeUnusedTextures) на Retina iPad.Cocos2d loading textures memory issue
И теперь у меня есть два сценария оптимизации текстур:
Первое: Я погрузочные минимальный набор текстур в начале приложения, и когда они нужны другие текстуры.
Недостаток: при загрузке текстур, когда приложение замораживается на мгновение для загрузки данных с диска. Невозможно загрузить текстуры с использованием GCD, потому что не все классы cocos2d являются потокобезопасными, а кокос ворчит, что все текстуры не используют один и тот же идентификатор (CCSprite is not using the same texture id
). (Примечание: я загружаю * .pvr.ccz файлы с помощью CCSpriteBatchNode
Во-вторыхов. Загрузки всех текстур в начале сцены
Минус: при переключении между сценами в течение некоторого времени в памяти есть ресурсы из двух сцен (меню и подменю, особенно при переходе из подменю в главное меню). Из-за этого объем памяти увеличивается до 600 МБ, а iOS убивает приложение, краш, армагеддон.
Как решить эту проблему? пытался найти что-то в Интернете, но без везения.
P.S Я использовал TexturePacker для оптимизации текстуры как можно лучше.
К сожалению, когда я использую '[CCTexture2D setDefaultAlphaPixelFormat: kCCTexture2DPixelFormat_RGB5A1];' (из вашего сообщения в блоге) графика выглядит не очень хорошо ... То же самое происходит, когда я использую этот параметр в TexturePacker. Я экспериментирую с PVRTC4 (альфа/нет альфа), но когда перемещение персонажа можно увидеть некоторые артефакты ... – lvp