从我所见,如果我想制作一个非 opengl 游戏循环,我可以做的是有一个游戏线程,在循环期间将更新游戏状态(或游戏物理),并通过锁定 aCanvas
来更新图形(normal) SurfaceView
,通过 Canvas.drawXXX(...) 方法进行绘图,然后解锁它,此时图形会为循环更新。
GLSurfaceView
使用and时我真的不知道该怎么做Renderer
。据我了解,我不能再像使用常规表面那样按需绘制手工制作的 gameThread 了Canvas
,因为现在有一个渲染线程将调用Renderer.onDrawFrame()
(在我传递给GLSurfaceView)。
那么我的问题是,用 GLSurfaceView 和 Renderer 制作游戏循环的好方法是什么?我是否仍然应该制作单独的游戏线程,但只处理其中的游戏状态(物理)更新,然后在我的 Renderer.onDrawFrame() 实现中使用该游戏状态来实际绘制基于当前状态的图形?我应该只使用 Rendere 的线程来进行状态更新吗?