В настоящее время я отображаю однокадровую анимацию в полноэкранном режиме на SurfaceView с использованием таймера и Canvas.onDraw()
/ canvas.drawBitmap
. Каждый кадр имеет разрешение 480х320 пикселей и будет растягиваться во время рисования до разрешения экрана. Это работает хорошо на более быстрых устройствах, достигая частоты кадров до 15 кадров в секунду. Проблема заключается в том, что мне нужно загрузить каждый кадр (анимация состоит из 30 отдельных кадров, которые зацикливаются) перед началом анимации, поскольку анимация будет отображаться с высокой частотой кадров. Учитывая малое пространство кучи для процессов Android, обычно 16 МБ, большинство моих тестирующих устройств не способны предварительно загружать все 30 кадров в память, поэтому я думаю вместо этого использовать OpenGL. Поскольку я читаю OpenGL, память не будет рассматриваться в пределах пространства кучи процесса 16 МБ, альтернативой может быть использование OpenGL.
Теперь мой вопрос: будет ли OpenGL достаточно быстрым, чтобы изменять и отображать текстуры (мои отдельные кадры) достаточно быстро, чтобы достичь высокой частоты кадров 15 кадров в секунду? Я прочитал статью о том, что слишком частая замена текстур значительно замедлит OpenGL. Ребята, у вас есть опыт? Я не хочу тратить время на запуск OpenGL, если вы уже можете сказать, что замена полноэкранных текстур с 15fps невозможна.
Edit:
Я сейчас использую технику, которая использует Android NDK по умолчанию без использования OpenGL. Смотрите мой ответ здесь .