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