Сокращение использования памяти для текстур в OpenGL ES 1.1 - PullRequest
3 голосов
/ 09 марта 2011

Моя сцена в OpenGL ES требует нескольких текстур большого разрешения, но они в оттенках серого, так как я использую их только для масок. Мне нужно уменьшить использование памяти.

Я попытался загрузить эти текстуры с помощью Bitmap.Config.ALPHA_8 и как RGB_565. ALPHA_8, кажется, на самом деле увеличивает использование памяти.

Есть ли способ загрузить текстуру в OpenGL и использовать ее менее 16 бит на пиксель?

glCompressedTexImage2D выглядит многообещающе, но, насколько я могу судить, разные телефоны предлагают разные методы сжатия текстур. Кроме того, я не знаю, уменьшает ли сжатие использование памяти во время выполнения. Является ли решение для хранения моих текстур в форматах ATITC и PVRTC? Если да, как определить, какой формат поддерживается устройством?

Спасибо!

Ответы [ 3 ]

10 голосов
/ 09 марта 2011

PVRTC, ATITC, S3TC и т. Д., Собственная сжатая текстура графического процессора должна уменьшить использование памяти и улучшить производительность рендеринга.

Например (извините, в C вы можете реализовать это как GL11.glGetString в Java),

const char *extensions = glGetString(GL_EXTENSIONS);
int isPVRTCsupported = strstr(extensions, "GL_IMG_texture_compression_pvrtc") != 0;
int isATITCsupported = strstr(extensions, "GL_ATI_texture_compression_atitc") != 0;
int isS3TCsupported = strstr(extensions, "GL_EXT_texture_compression_s3tc") != 0;

if (isPVRTCsupportd) {
    /* load PVRTC texture using glCompressedTexImage2D */
} else if (isATITCsupported) {
...

Кроме того, вы можете указать поддерживаемые устройства, используя формат текстур в AndroidManifest.xml.

EDIT

2 голосов
/ 09 марта 2011

В системах на основе технологий Imagination (aka PowerVR) вы сможете использовать PVRTC 4bpp и (в зависимости от требований к текстуре и качеству), возможно, даже вариант PVRTC 2bpp.

Кроме того, хотя яНе зная, что раскрывается в системах Android, PVRTextool перечисляет I8 (т. е. оттенки серого 8bpp) в качестве целевого формата текстуры, что даст вам возможность без потерь.

1 голос
/ 10 июля 2012

Сжатие текстур ETC1 поддерживается на всех устройствах Android с Android 2.2 и выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...