我决定将我的基于sprites的2d游戏转换为android使用opengl-es来帮助解决一些渲染相关的帧速率问题。目前设置如下:
将tkaes放置在自己的线程中,并将rendermode设置为continuous。游戏逻辑更新发生在单独的威胁中。两个线程都与同步的drawlock类进行交互,确保它们不会同时触及游戏信息。
基本上,渲染线程在绘制之前等待任何当前更新完成,并且更新线程在开始更新之前等待当前渲染结束。一切看起来都很棒,除了在屏幕上移动时我在图片中注意到的一些不稳定。
我认为这可能是由于每个渲染之间发生的更新数量不一致,平均发生了两倍的更新,因为到目前为止,更新中并没有发生很多事情。但是这缺乏一致性,所以有时1通过,有时2,3,等等,因此绘制的项目位置的增量也不一致,从而造成波动。
任何人都知道如何纠正这个问题?更新线程被调节到每秒60次睡眠...也许类似的东西需要在渲染下发生?我现在还不确定。
答案 0 :(得分:1)
根据您的游戏数据的大小,您可以尝试复制它。当游戏引擎更新一个副本时,渲染引擎正在处理另一个副本。更新完成后,渲染引擎切换到读取更新的副本,同时游戏引擎等待,直到更新传输到较旧的副本(引擎将在下一个周期更新)。这是一种双缓冲方法,但应用于游戏数据而不是显示缓冲区。