Android: 2D. OpenGl или android.graphics? - PullRequest
29 голосов
/ 03 мая 2010

Я работаю с моим другом над нашей первой игрой для Android. Основная идея заключается в том, что каждый кадр игры на всей поверхности перерисовывается (1 большое растровое изображение) в 2 этапа:

  1. Фон со статическим изображением (PNG) стирает предыдущий кадр
  2. Затем его обсыпают большим количеством частиц, которые создают эффект мыльных пузырей, где есть пул около 20 битовых карт, которые случайным образом выбираются, чтобы создать иллюзию, что все пузырьки (между 200 - 300) все разные. Положение пузырьков обновляется на каждом кадре (~ 50 мс), создавая эффект движущихся пузырьков.

Математический движок написан на C (JNI), и в настоящее время все рисование выполняется с использованием пакета android.graphics, очень похожего (так как это был пример, который я использовал) на Lunar Lander. Это работает, но анимация несколько прерывистая, и по температуре моего телефона я чувствую, что он очень занят. Получим ли мы пользу от перехода на OpenGL? И в качестве дополнительного вопроса: что было бы хорошим способом оптимизировать механизм рисования (например, Lunar Lander) у нас сейчас?

Ответы [ 2 ]

6 голосов
/ 03 мая 2010

Теперь я начал работать с OpenGL ES, я бы также использовал его для 2D-графики. Этот способ является наиболее гибким и чрезвычайно быстрым (посмотрите на этот пример кода . Он касается 2D-рендеринга, и здесь вы можете увидеть всю мощь OpenGL.

Это не самая легкая вещь для начала, но есть несколько хороших уроков - например, , это очень хорошее.

3 голосов
/ 19 сентября 2013

Не перерисовывать весь экран каждый раз. Это то, что вызывает вашу низкую частоту кадров. Используйте метод invalidate, чтобы отметить области, которые изменили каждый кадр.

...