Сжатие PVR в анимации - iphone sdk

Я анимировал 89-кадровую последовательность png, которая была сокращена вдвое, помещая два кадра на кадр 512 x 512. но у меня серьезные проблемы с качеством изображения (с потерями)

Кто-нибудь знает хороший способ анимировать 89-кадровую анимацию без потери качества и не перегружая процессор?

всего наилучшего.


person keuminotti    schedule 23.06.2009    source источник
comment
Отметим, что сжатие PVR лучше всего подходит для органических изображений: дым, огонь, текстура земли и т. Д. И плохо подходит для структурированных изображений: текста, векторных линий, дискретных линий и т. Д.   -  person tmh    schedule 23.06.2009
comment
Вы можете просто показать 89 кадров как видео MP4? Таким образом, вы можете позволить оборудованию позаботиться о самых сложных вещах.   -  person tmh    schedule 24.06.2009
comment
Спасибо TMH, какой протокол вы используете для создания видео MP4, извините, я новичок, но не использовал и не рассматривал видео MP4, хотя я читал в другом месте в стеке, что это альтернатива.   -  person keuminotti    schedule 24.06.2009


Ответы (2)


PVRTC определенно сделает ваше изображение неестественным, но есть способы обойти это. Использование текстурного атласа может помочь, потому что PVRTC обычно больше всего искажает края изображения, а также вызывает проблемы с прозрачностью. Я бы также попробовал отключить любой имеющийся у вас фильтр mipmap (как ближайшие, так и линейные фильтры, но особенно ближайшие, в сочетании с PVRTC, могут сделать его значительно более размытым) и попробуйте включить линейный фильтр текстуры , который смешает все, чтобы потери были менее заметными и все выглядело только слегка размытым. Вы также можете сохранять изображения большего размера, чем вы их рисуете (т. Е. Иметь изображение 512x512, сжатое с помощью PVRTC, но рисовать его с разрешением 256x256). 2BPP PVRTC приведет к тому, что текстура будет занимать 1/8 объема памяти, чем RGBA 4444, поэтому даже такое увеличение размера (чтобы занять в 4 раза больше памяти) даст вам экономию в 2 раза. Однако, если вы просто используете 4BPP, вы можете просто использовать RGBA 4444, если вам нужно изменить размер изображения в два раза.

Для больших изображений, требующих большей детализации, PVRTC обычно не лучший вариант. Что касается значков и т.п., вы можете увидеть значительную экономию, особенно потому, что вы можете рисовать их намного меньше.

Mip-карты создаются следующим образом (не делайте этого):
glGenerateMipmapOES(GL_TEXTURE_2D);

А вот линейный текстурный фильтр можно включить вот так:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

Вы определенно не этого делать:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);

person Eli    schedule 06.07.2009

Я делаю аналогичный проект, используя cocos2d. Ваши изображения могут выглядеть лучше, если вы сделаете одно изображение для каждой текстуры или, возможно, попробуете формат RGBA 4444.

Но если вы используете cocos2d, это довольно просто. После того, как вы скачали cocos2d, есть очень хороший пример кода.

http://www.cocos2d-iphone.org/archives/61

person John    schedule 01.07.2009