Ограничение по размеру текстуры? Android Open GL ES 2.0 - PullRequest
7 голосов
/ 20 декабря 2011

Я хотел бы знать, есть ли какие-либо ограничения на размер текстуры, которые можно использовать в любых проектах Android Opengl Es 2.0.Я понимаю, что иметь огромную текстуру размером 4096x4096 немного значит меньше, так как она отображается на маленьком экране.Но что если требуется переключаться между многими текстурами во время выполнения?И если я хочу, чтобы текстурный атлас делал быструю одиночную загрузку вместо нескольких меньших загрузок текстуры.Пожалуйста, дайте мне знать ваши идеи в этом отношении.

Также я уверен, что должно быть ограничение на размер изображения, которое может быть обработано устройством, так как память на устройстве ограничена.Но я хотел бы знать, основано ли это на разрешении или на размере.Я имею в виду, если устройство имеет ограничение размера изображения 1024x1024, может ли оно обрабатывать сжатую текстуру размером 2048x2048, которая будет примерно такого же размера, что и несжатая 1024x1024.

Также, пожалуйста, дайте мне знать, как правило, сколькоограничение на размер текстуры или разрешение обычных устройств под управлением Android 2.2 и выше будет

Также, пожалуйста, дайте мне знать, если есть какие-либо рекомендации по обработке изображений с высоким разрешением в opengles 2.0, чтобы получить лучшую производительность во время загрузки.а также время выполнения.

1 Ответ

22 голосов
/ 20 декабря 2011

Существует аппаратное ограничение на размеры текстур.Чтобы вручную найти их, вы можете перейти на сайт, например glbenchmark.com (здесь отображаются сведения о Google Galaxy Nexus).
Чтобы автоматически найти максимальный размер в вашем коде, вы можете использовать что-нибудьнапример:

int[] max = new int[1];
gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, max, 0); //put the maximum texture size in the array.

(для GL10, но тот же метод существует для GLES20)

Когда дело доходит до обработки или редактирования изизображение, которое вы обычно используете экземпляр Bitmap при работе в Android.Это содержит несжатые значения вашего изображения и, следовательно, зависит от разрешения.Однако рекомендуется использовать сжатые текстуры для приложений openGL, поскольку это повышает эффективность использования памяти (обратите внимание, что вы не можете изменять эти сжатые текстуры).
Из предыдущей ссылки :

Сжатие текстур может значительно повысить производительность вашего приложения OpenGL за счет снижения требований к памяти и более эффективного использования пропускной способности памяти.Платформа Android обеспечивает поддержку формата сжатия ETC1 в качестве стандартной функции [...]

. Вы должны взглянуть на этот документ , который содержит много полезных практик и подсказок озагрузка и использование текстур.Автор явно пишет:

Рекомендация: используйте ETC для сжатия текстур.

Рекомендация. Убедитесь, что ваши геометрические и текстурные разрешения соответствуют размеру, при котором они отображаются.Не используйте текстуру 1k x 1k для чего-то, что имеет максимальную ширину 500 пикселей на экране.То же самое для геометрии.

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