游戏开发:如何限制 FPS?

新手上路,请多包涵

我正在写一个游戏,我看到 FPS 算法不能正常工作(当他必须计算更多时,他睡得更久……)所以,问题很简单:如何计算具有正确 FPS 的睡眠时间?

我知道在微秒内更新一帧游戏需要多长时间,当然还有我想要达到的 FPS。

我正在疯狂寻找一个简单的例子,但我找不到……

代码可能是 Java、C++ 或伪……

原文由 Martijn Courteaux 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 736
2 个回答

每帧的微秒数是 1000000 / frames_per_second 。如果你知道你已经花费了 elapsed_microseconds 计算,那么你需要睡觉的时间是:

 (1000000 / frames_per_second) - elapsed_microseconds

原文由 JSBձոգչ 发布,翻译遵循 CC BY-SA 2.5 许可协议

你应该花在渲染一帧上的时间是 1/FPS 秒(如果你的目标是 10 FPS,你应该在每一帧上花费 110 = 0.1 秒)。因此,如果渲染需要 X 秒,您应该“睡眠” 1/FPS - X 秒。

将其转换为例如毫秒,您会得到

ms_to_sleep = 1000 / FPS - elapsed_ms;

如果它由于某种原因花费了超过 1/FPS 来渲染帧,你会得到一个负的睡眠时间,在这种情况下你显然只是跳过了睡眠。

原文由 aioobe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题