Использование памяти Атласа текстур Cocos2D / CocosBuilder

Я новичок в Cocos2D и CocosBuilder, и у меня есть несколько вопросов относительно использования памяти.

1) В CocosBuilder (или Cocos2D, если на то пошло), если я использую один и тот же атлас текстуры (таблицу спрайтов) для ВСЕХ объектов CCSprite в одной сцене, будет ли это экономить использование памяти по отдельной текстуре для каждого спрайта? Если быть точным, если я использую одну текстуру 4k * 4k, будет ли игра требовать памяти только для одного атласа текстур (например, 4k * 4k * 32 бита)?

2) Могу ли я использовать разные режимы текстуры для разных спрайтов для экономии памяти? Например, использование режима без альфа для фонового изображения. Другими словами, может ли Cocos2D обрабатывать разные режимы текстуры в одной сцене?

3) Мне нужно реализовать игру с примерно 100 объектами на сцене, всего три сцены. Сейчас все объекты на одной сцене используют одну и ту же таблицу спрайтов. Тем не менее, игра вылетает после нескольких переходов между сценами. Каждый раз я получал сообщение с предупреждением. Как лучше всего решить эту проблему? Я попытался сбросить все эти кеши, но все равно вылетел.

Большое спасибо!


person BiGGA    schedule 30.04.2013    source источник


Ответы (1)


1) Текстура загружается только один раз, независимо от того, сколько объектов из нее нарисовано. Обычно вы не экономите (много) памяти от использования одной текстуры, но вы улучшаете время загрузки и производительность рендеринга, используя как можно меньше текстурных атласов, а не текстуры отдельных файлов изображений.

2) Да. Вы можете иметь, например, текстуры RGB565 (без альфа), RGB5551 (bool alpha) или RGBA4444 / RGBA8888 в одной сцене, без проблем.

3) Используйте инструменты. Проверить на утечки. Если вы не используете ARC, сейчас самое время переключиться. PS: не очищайте кеши, это просто трата времени И памяти, потому что в конечном итоге текстуры придется перезагружать снова. Если вы хотите освободить текстуру, которая, как вы уверены, не используется в настоящее время и не будет использоваться в ближайшем будущем, извлеките из кеша только эти текстуры.

person LearnCocos2D    schedule 01.05.2013
comment
Спасибо! Это очень помогает. Наша игра нечасто использует текстуры повторно. Итак, я думаю, мы можем просто удалить те, которые не будут использоваться в ближайшее время. - person BiGGA; 01.05.2013