2015-01-23 3 views
0

Я программирую Android-игру. Чтобы уменьшить количество текстур, которые необходимо загрузить (OpenGL ES 2.0), я создал несколько спрайтов размером 1024x1024. Некоторые кадры одной и той же анимации находятся на разных спрайтах. Теперь мой вопрос в том, что это плохо для производительности, поскольку мне нужно привязать (OpenGL.bind()) другую текстуру для каждого кадра анимации?Android OpenGL: используйте несколько текстур для одного анимированного спрайта

+0

Вы можете смело использовать текстуры 2048x2048 для спрайтов –

+0

Эй, я действительно не думаю, что это правда. Насколько я помню, на некоторых более старых устройствах максимальный размер текстуры составляет 1024x1024 !? – sjkm

ответ

1

Да, изменение привязки текстуры имеет некоторое влияние на производительность по сравнению с , а не. Скорее всего, лучше всего определить эмпирическое тестирование.

Если вы можете переключиться на OpenGL ES 3, вы можете использовать массив текстур, а не текстуру.

Однако, если это не вариант, почему бы просто не связать все ваши спрайт-листы сразу? Если у вас меньше GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, вам не нужно менять привязку текстуры, просто предоставьте некоторый способ дать шейдеру знать, к какой связанной текстуре он должен идти.

+0

Эй, Джерико, большое спасибо за ваш ответ. Очень интересный момент, который вы упомянули! Я использую AndEngine и не знаю точно, как привязка выполняется, может быть, вы это делаете? Кадр анимации изменяется после нескольких сотен миллисекунд (не в том же круговом цикле), так действительно ли имеет значение использовать несколько текстур вместо одного? (Потому что и в случае одной текстуры текстура получает привязку в каждом круговом цикле, я думаю неправильно?) – sjkm

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