Сжатие PVRTC, увеличивающее размеры файла PNG

Мне вполне нравится Окончательный ++ IDE. Это имеет некоторые функции, которые были разработаны для использования с их собственной библиотекой (который, BTW, вполне хороший инструментарий, если Вы не хотите покупать или на GTK + или на QT), но это работает отлично с общими проектами C++. Это обеспечивает достойное завершение кода, хорошую окраску синтаксиса, интегрированную отладку и все другие функции самая современная поддержка IDE.

5
задан deft_code 21 August 2010 в 22:20
поделиться

4 ответа

Обычно несжатые данные изображения имеют фиксированную скорость 24 бит на пиксель (RGB) или 32 бит на пиксель (RGBA). PVRTC имеет фиксированную скорость 4bpp (или 2bpp), поэтому сжатие составляет 6 или 8 (12 или 16) раз по сравнению с этим.

Требование к графическому оборудованию для использования текстур изначально состоит в том, что формат текстуры должен быть случайным образом доступен для оборудования. PVRTC - это формат такого типа, PNG - нет, и поэтому PNG может обеспечить более высокую степень сжатия. PVRTC - это формат времени выполнения, развертывания; PNG является форматом хранения.

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

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

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

Если вы хотите уменьшить объем хранилища PVRTC, вы можете попробовать сжатие в стиле zip для файлов текстур и расширить их при загрузке с диска.

17
ответ дан 18 December 2019 в 08:29
поделиться

PVRTC (Сжатие текстур PowerVR) - это формат сжатия текстур. На устройствах, использующих PowerVR, например, на большинстве мобильных телефонов более высокого класса, включая iPhone и другие устройства на базе ARM, такие как iPod, рисование выполняется очень быстро, поскольку рисование ускоряется аппаратно. Он также использует гораздо меньше памяти, поскольку изображения представлены в их сжатой форме и декодируются при каждом рисовании, тогда как PNG необходимо распаковать перед рисованием.

PNG - это сжатие без потерь.

PVRTC - это сжатие с потерями, что означает, что оно приближается к изображению . У него совершенно другие критерии дизайна.

PVRTC «сжимает» (аппроксимируя) любой тип произведения искусства, давая фиксированное количество бит на тексель, включая фотографические изображения.

PNG не приближает изображение, поэтому если изображение содержит небольшую избыточность, он почти не сжимается.

2
ответ дан 18 December 2019 в 08:29
поделиться

Поместите более одного кадра в одно изображение и растяните подпрямоугольники текстуры. Это резко сократит потребление памяти.

Если у вас изображения, скажем, 64x64, то вы можете разместить 256 из них на текстуре 1024x1024 в расположении 16x16.

С небольшими усилиями, изображения не обязательно должны быть одинакового размера, если только вы отслеживаете в коде прямоугольника в текстуре каждое изображение.

Именно так поступают разработчики игр для iPhone.

0
ответ дан 18 December 2019 в 08:29
поделиться

Я согласен с Уиллом. Нет смысла в вопросе. Я прочитал вопрос 3 раза, но до сих пор не знаю, что хочет знать Санкар. Это просто жалоба, без вопросов.

Единственное, что я могу посоветовать, не используйте PVRTC, если не возражаете. Он обеспечивает прирост производительности и экономит VRAM, но в этом случае вам не поможет. Потому что вам нужно просто уменьшить объем игры, а не думать о компромиссе между производительностью и качеством.

0
ответ дан 18 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: