微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pygame - 恒定帧率

如何解决pygame - 恒定帧率

我希望在我的 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))

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

解决方法

我相信您可以使用所需的帧速率调用 clock.tick(),并且它会做正确的事情。也就是说,您可以只用 clock.tick(FPS) 替换代码的最后三行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。