Переполнение памяти в CCSprite - PullRequest
0 голосов
/ 01 апреля 2011

Мне нужно создать и показать 10 изображений с помощью cocos2d.Каждый будет размещен над предыдущим, и все будут видны одновременно (все они имеют прозрачные области).Каждое изображение имеет разрешение 2048x1536.

Когда я создаю 5 или меньше CCSprites, приложение работает нормально, но когда я создаю 6 CCSprite - оно вылетает на устройстве (iPad) с ошибкой «Data Formatters временно недоступна».

Я полагаю, это нехватка памяти, но, возможно, кто-то знает какой-либо подход для этой ситуации

Спасибо!

1 Ответ

1 голос
/ 01 апреля 2011

Прозрачное изображение такого размера использует около 12 МБ оперативной памяти (2048 *1536* 4 байта).

Вам повезло, что вы получили 5 изображений такого размера, показанных до сбоя вашего приложения ... что обычно происходит при использовании оперативной памяти около 50 МБ.

Без дополнительных знаний о том, что вы хотите сделать или нужно отобразить, я не могу дать совет, что делать ... но вы не сможете показать 10 изображений такого размера.

edit: так как вы используете cocos / opengl, вы можете получить больше изображений, если измените формат изображения на rgb4444. Это сократит потребность в памяти вдвое, но вы также потеряете качество изображения.

...