2

我已经使用骨骼动画实现了加载 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++。

4

1 回答 1

2

它在不同设备上以不同的帧速率运行也就不足为奇了,因为有些设备比其他设备。为了使其始终保持每秒 60 帧,每帧必须持续 16 毫秒,因为某些设备可以在更短的时间内处理更新循环,因此它们可能需要大约 10 毫秒(在这种情况下,您可能希望在帧结束时休眠 6 毫秒)在其他设备中,可能需要 17 毫秒(据我所知,您在这里无能为力)。

Game Programming Patterns book(Game Loop章节)中有很好的读物,可在线免费阅读。但是这本书很受欢迎,我猜你已经看过了:p但无论如何还是值得一提的。

于 2019-03-07T09:50:12.537 回答