我已经实现了加载MD5模型与骨架动画,它工作正常。现在我正在尝试增强游戏循环,以便顺利地播放所有内容并纠正时机。我阅读了不同的游戏循环然后实现了最好的一个,因为我读到有以下情况:
accumulatedTime += timer.elapsed();
nLoops = 0;
processInputs();
while (accumulatedTime >= dt && nLoops < maxSkipFrames)
{
updateGame(dt/20.0);
accumulatedTime -= dt;
nLoops++;
}
timer.reset();
我实现CPU骨架动画,所以我更新每个帧的所有顶点和法线。 updateGame(dt)
方法根据骨架动画更新网格顶点,它应该花费一些时间,并将其添加到更新顶点的动画时间。在我的游戏循环实现中存在一些错误,这使得不同设备上的更新速率不同。我在Android上使用OpenGL和C ++。
毫不奇怪,它在不同设备上以不同的帧速率运行,因为有些速度比其他设备快。为了使其始终为每秒60帧,每帧必须持续16ms,因为一些设备可以在更短的时间内处理更新循环,它可能需要大约10ms(在这种情况下,您可能希望在帧结束时休眠6ms)而在其他设备中它可能需要17ms(据我所知,这里你无能为力)。
在Game Programming Patterns书(游戏循环章节)中有一个很好的解读,可以在线免费阅读。但这本书如此受欢迎,以至于我猜你已经偷看了它:p但是无论如何都值得一提。