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