Как минимум, игра OpenGL для Android имеет поток пользовательского интерфейса и поток визуализации, созданный GLSurfaceView
. Renderer.onDrawFrame()
должен делать минимум работы, чтобы получить самый высокий FPS. Физике, ИИ и т. Д. Не нужно запускать каждый кадр, поэтому мы можем поместить их в другой поток. Теперь у нас есть:
- Нить рендерера - обновляйте анимацию и рисуйте полис
- Тема игры - Логика и периодические обновления физики, ИИ и т. Д.
- Поток пользовательского интерфейса - только взаимодействие с Android-интерфейсом
Поскольку вы никогда не хотите блокировать поток пользовательского интерфейса, я запускаю еще один поток для логики игры. Может быть, в этом нет необходимости? Есть ли причина запускать игровую логику в потоке рендерера?
источник