如何修复以与VSync不同的帧速率运行的游戏循环?

时间:2012-04-29 22:41:39

标签: opengl language-agnostic

例如,我有60 fps的游戏逻辑但50 fps的VSync。我应该将游戏循环移动到另一个线程并发送绘图线程的绘图请求,或者我仍然可以通过一个线程解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

您的游戏逻辑是否需要1/60才能计算,或者这仅仅是您使用的模拟间隔?如果它是一个间隔,我建议你按照每个显示一个帧所花费的时间调整模拟间隔,即你测量帧之间的时间并用你的模拟进行模拟。

答案 1 :(得分:1)

看看Glenn Fiedler的这篇文章,“修复你的时间步”:

http://gafferongames.com/game-physics/fix-your-timestep/

答案 2 :(得分:0)

您应该使用计时器而不是硬编码计时。 (而不是使用先前更新和当前更新之间的差异而不是1/60秒。)这可以避免计算无法达到60fps的情况。那么VSync也不会成为一个问题。

如果我错了,请纠正我,但你可以在任何fps渲染,屏幕在任何其他fps处绘制而没有任何问题(除了可能有点抖动)

对于多核CPU,我建议在实际使用时使用线程。例如,一个线程中的物理,另一个线程中的渲染(使用快照数据渲染以防止副作用)。