Лучший способ сделать игровой цикл для Android с помощью OpengGLSurface

Из того, что я видел, если я хочу создать игровой цикл НЕ-opengl, что я могу сделать, так это создать игровой поток, который во время цикла будет обновлять состояние игры (или физику игры), а также обновлять графику, блокируя Canvas из (normal ) SurfaceView , выполняя рисование с помощью методов Canvas.drawXXX (...) и затем разблокируя его, после чего графика обновляется для цикла.

Я действительно не понимаю, как это сделать при использовании GLSurfaceView и Renderer . Насколько я понимаю, у меня больше нет возможности рисовать по запросу gameThread, как это было с обычной поверхностью, и это Canvas , потому что теперь есть поток рендеринга, который будет вызывать Renderer.onDrawFrame () (в моей реализации класса рендерера, который я передаю GLSurfaceView).

Тогда у меня вопрос, как лучше всего создать игровой цикл с помощью GLSurfaceView и Renderer? Должен ли я по-прежнему создавать отдельный игровой поток, но обрабатывать в нем только обновления состояния игры (физики), а затем использовать это состояние игры в моей реализации Renderer.onDrawFrame () для фактического рисования графики на основе текущего состояния? Должен ли я использовать поток Rendere только для обновления состояния?

11
задан genpfault 14 February 2012 в 15:07
поделиться