2011-12-20 5 views
5

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

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

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

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

ответ

21

Существует ограничение аппаратных ограничений на размеры текстур. Чтобы вручную просмотреть их, вы можете перейти на такой сайт, как 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. Это удерживает несжатые значения вашего изображения и, следовательно, зависит от разрешения. Однако, recommended использует сжатые текстуры для ваших приложений openGL, так как это повышает эффективность использования памяти (обратите внимание, что вы не можете изменять эти сжатые текстуры).
От previous link:

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

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

Наилучшая практика: используйте ETC для сжатия текстуры.

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

Смежные вопросы