MD5动画和游戏循环

时间:2019-03-07 08:52:28

标签: c++ timer opengl-es game-loop skeletal-animation

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

1 个答案:

答案 0 :(得分:2)

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

Game Programming Patterns书(游戏循环一章)中对此有很好的阅读,该书可在线免费阅读。但是这本书太受欢迎了,以至于我猜你已经偷过:p 了,但还是值得一提。