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