Я играю через анимацию около 90 изображений @ 480x320 каждый, и мне интересно, с изображениями, не имеющими силы 2, будет ли это большой успех? Я программирую еще в iPhone 3Gs. Также я использую cocs2d.Размер изображения в cocos2d
ответ
Давайте посмотрим ...
480x320 изображение будет создавать текстуру 512х512 (следующей ближайшей степени двойки). 512x512 раз 32-битная глубина цвета (4 байта) равна 1 мегабайту. 90 раз 1 мегабайт равен 90 мегабайтам.
Ваша самая большая проблема будет выделять эту большую память и кэшировать ее. Без кэширования изображений анимации вам придется загружать каждое изображение каждый раз, когда изменяется рамка анимации. Загрузка 1 мегабайта из флеш-памяти довольно медленная, я предполагаю> 100 миллисекунд. Поэтому каждый раз, когда изменяется кадр, ваше приложение останавливается на долю секунды. Это будет проблемой для 3GS и, возможно, для устройств Retina, если вы используете изображения Retina (для каждого изображения 960x640 требуется 4 мегабайта текстурной памяти).
Вы можете улучшить это только с помощью сжатых изображений PVR (используйте TexturePacker). Даже для уменьшения размера текстуры до 16 бит, вероятно, будет недостаточно для плавной анимации.
Предполагая, что вы загружаете все эти изображения в начале и 16-разрядные изображения.
Ну, у вас будет 512x512x90 = 23,592,960 пикселей С 16-битными изображениями, которые 377 487 360 бит. 377,487,360 bits = 45 мегабайт ОЗУ.
Так что да, это большой удар производительности.
Так что мне нужно сделать изображение мощностью 2? Это поможет мне? – Stephen
Нет, это будет точно так же. Вы можете упаковать их в атлас, используя упаковщик текстуры. Это поможет –