PVRTC определенно заставит ваше изображение выглядеть с потерями, но есть способы обойти это. Использование текстурного атласа может помочь, потому что PVRTC обычно портит края изображения больше всего, а также вызывает проблемы с прозрачностью. Я бы также попытался отключить любой фильтр mipmap, который у вас есть (как ближайший, так и линейный фильтры, но особенно ближайший, в сочетании с PVRTC, он может выглядеть значительно более размытым) и попробуйте включить линейный фильтр текстуры, который будет смешивать все так, чтобы потеря была менее заметной, а вещи выглядели слегка размытыми. Вы также можете сохранить ваши изображения больше, чем вы их рисуете (т. Е. Иметь изображение 512x512, сжатое с помощью PVRTC, но нарисуйте его с разрешением 256x256). 2BPP PVRTC приведет к тому, что текстура будет занимать на 1/8 больше памяти, чем RGBA 4444, поэтому даже увеличение такого размера (чтобы увеличить объем памяти в 4 раза) даст вам экономию в 2 раза. Однако если вы просто используете 4BPP, вы можете просто использовать RGBA 4444, если вам нужно изменить размер изображения в два раза.
Для больших изображений, которые должны быть более подробными, PVRTC, как правило, не очень хорошая стратегия. Что касается значков и тому подобного, вы можете увидеть значительную экономию, особенно потому, что можете рисовать их намного меньше.
Mipmaps сделаны так ( не сделайте это):
glGenerateMipmapOES(<code>GL_TEXTURE_2D
);
И вы можете включить линейный текстурный фильтр следующим образом:
glTexParameteri(<code>GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR
);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR
);
Вы определенно не хотите сделать это, либо:
glTexParameteri(<code>GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR
);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR
);