0

我想在我的 Pygame 游戏中实现尽可能恒定的帧速率。

这个答案(Setting a fixed FPS in Pygame, Python 3)解释了如何给出流畅且与帧速率无关的结果,但这与恒定帧速率不同。

我期望的是(对于 30 FPS 目标):

  • 如果处理时间少于 1/30 秒,则休眠一段剩余时间以避免使用所有 CPU 资源。
  • 如果更多,不要睡觉。

一种解决方案(但似乎不是最佳的,不知道为什么):

... setup pygame...
clock = pygame.time.Clock()

# Main loop
while True:
    ...do some processing...
    ...possibly not same computation time every frame...
    dt = clock.tick(0)
    if dt < 1/FPS:
        clock.tick(1/ (1/FPS - dt))

clock.tick在@Rabbid76 的回答后编辑。

4

1 回答 1

0

我相信你可以clock.tick()用你想要的帧速率调用,它会做正确的事情。也就是说,您可以将代码的最后三行替换为clock.tick(FPS).

于 2021-02-15T09:02:11.203 回答