MD5动画和游戏循环
MD5 animation and game loop
我已经实现了加载带有骨骼动画的 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 帧,每帧必须持续 16 毫秒,因为某些设备可以在更短的时间内处理更新循环,它们可能需要大约 10 毫秒(在这种情况下,您可能希望在帧结束时休眠 6 毫秒)在其他设备上可能需要 17 毫秒(据我所知,您无能为力)。
Game Programming Patterns 一本书(游戏循环 一章)对此有很好的读物,可在线免费阅读。但是这本书太受欢迎了,我猜你已经看过了 :p 但无论如何还是值得一提。
我已经实现了加载带有骨骼动画的 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.
它在不同设备上以不同帧速率运行并不奇怪,因为有些设备比其他设备更快。要始终保持每秒 60 帧,每帧必须持续 16 毫秒,因为某些设备可以在更短的时间内处理更新循环,它们可能需要大约 10 毫秒(在这种情况下,您可能希望在帧结束时休眠 6 毫秒)在其他设备上可能需要 17 毫秒(据我所知,您无能为力)。
Game Programming Patterns 一本书(游戏循环 一章)对此有很好的读物,可在线免费阅读。但是这本书太受欢迎了,我猜你已经看过了 :p 但无论如何还是值得一提。