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