Подтвердить что ты не робот

PVR-текстуры против PNG в OpenGL ES

Я разрабатываю 2D-приложение для iPhone, которое отображает много текстур. Большинство из них загружаются из PNG файлов с альфа-прозрачностью на данный момент. В качестве теста я играл с PVR-тестами, чтобы узнать, есть ли разница в производительности.

PNG-текстуры загружаются с помощью класса Texture2D, который поставляется с примером сбоя. PVR-тесты загружаются классом PVRTexture из примера PVRTextureLoader. Я создаю текстуры PVR, используя Apple texturetool.

В качестве теста я визуализирую фон (512 * 512) и поверх этого 36 90 * 64 пиксельных спрайтов (из текстуры 512 * 512) с прозрачностью. Текстуры PVR составляют около 58 кадров в секунду, а PNG - 47 кадров в секунду. Это то, что я могу ожидать, или если разница будет больше? Кроме того, текстуры, создаваемые текстурой, выглядят очень плохо, лучше PVRTexTool?

4b9b3361

Ответ 1

PNGs:

  • Высокоточное представление цвета, а не потеря.
  • Более медленное чтение/распаковка с диска.
  • Медленная загрузка на графическое оборудование, внутреннее переупорядочение пикселей (swizzling) выполняется драйверами. Возможно, существует также преобразование между RGBA ↔ BGRA ↔ ARGB, хотя Xcode обычно преобразует PNG в формат цвета, более оптимизированный для аппаратного обеспечения.
  • Более медленное рендеринг из-за ограниченной пропускной способности памяти (больше байтов для чтения из памяти для GPU). Фактический объем замедления зависит от сценария использования. Эта проблема в основном заметна с коэффициентом увеличения менее 1 раза и без MIP-отображения.
  • Возьмите больше места для RAM/VRAM.
  • Редактируемый, можно фильтровать/смешивать/изменять размер/конвертировать ваше программное обеспечение перед загрузкой.
  • Mip-карты могут генерироваться автоматически во время загрузки текстур драйверами.
  • Использование дискового пространства зависит от содержимого, очень мало для простых изображений, почти несжатого для фотореалистичных.
  • Может быть экспортировано из любого программного обеспечения для редактирования изображений напрямую и быстро.

PVRs:

  • Низкая точность сжатия с потерями. Доступны 2 уровня сжатия, 2 бит на пиксель и 4 бит на пиксель. Блочный, может повредить острые края и гладкие градиенты. Качество изображения зависит от содержимого. 3 или 4 цветных канала, поэтому вы можете использовать альфа-канал, но сжатие с потерями может дать нежелательные результаты.
  • Быстрая загрузка с диска, без необходимости декомпрессии программного обеспечения.
  • Почти мгновенная загрузка текстуры, поскольку она является внутренним аппаратным форматом, будет проходить без изменений.
  • Быстрая визуализация из-за использования пропускной способности меньшего объема. Скорость рендеринга пикселей в основном ограничена другими факторами, когда используются PVR-текстуры.
  • Используйте наименьшее количество оперативной памяти и пространства VRAM.
  • Mip-карты должны быть предварительно сгенерированы.
  • Вы не можете создавать или редактировать PVR внутри вашего программного обеспечения AFAIK. Или он будет очень медленным.
  • Использование дискового пространства прямо пропорционально размерам исходного изображения (фиксированная степень сжатия). Может быть дополнительно сжат (слегка) другими способами.
  • Ограничения по размеру. Силы 2, только квадратные.
  • Требуется дополнительный инструмент преобразования, обработка может быть автоматизирована, но значительно сократит время сборки.

Ответ 2

Производительность должна быть лучше с текстурами PVRTC, поскольку они сжимаются (теряются). Декомпрессия выполняется в самом графическом оборудовании. Меньше данных текстуры переносятся, поэтому вы получаете большую пропускную способность. Цена, которую вы платите за ОЗУ и экономию полосы пропускания, - это потеря качества.