【问题标题】:PyGame slower on macOS than on Ubuntu or RaspbianPyGame 在 macOS 上比在 Ubuntu 或 Raspbian 上慢
【发布时间】:2020-09-07 11:03:49
【问题描述】:

我使用 PyGame 来创建游戏,但我注意到程序在 macOS 上的运行速度比在我的 Raspberry Pi 上慢很多。我最初的解决方案是在我的计算机上安装 Ubuntu 和 macOS,这很有效。但是,我宁愿在我的计算机上只有一个操作系统。有谁知道为什么 PyGame 在我的 Mac 上运行 macOS 时会这么慢?

如果有帮助,我可以发送代码。但是,我有多个 PyGame 程序,它们都做完全相同的事情,所以我认为这很可能不是代码的错,但我可能是错的。

感谢您的帮助。

附:当我说较慢时,我的意思是它在 macOS 上的运行速度是 Ubuntu 上的 30%。

【问题讨论】:

  • 您在两个平台上的 pygame 和/或 SDL 版本是否相同?硬件有多不同?
  • 我在同一台计算机上运行 ubuntu 和 macos,ubuntu 对 pygame 的运行速度更快。 Pygame 在我的 raspberry pi 上也比我的 MacBook 更快。所以我的 Mac 上的硬件更好,但 pygame 更慢。慢了很多。 @金斯利
  • 这个问题在 Python 2.7 上,但应该仍然有效:stackoverflow.com/questions/31685936/…
  • @GalaxyCat105 我尝试了这两个答案。我有 pygame 以低分辨率运行。另外,我从程序中完全删除了clock.tick() 链接。还是有同样的问题。
  • 我不知道 PyGame 模块,但 Python 在我的 Mac 上运行良好。这可能是 PyGame 模块的问题。

标签: python python-3.x macos pygame


【解决方案1】:

Pygame 基于 SDL 库。支持使用various rendering backends,如OpenGLmetal。根据this answer(和评论),metal 渲染器似乎在 mac 上表现不佳。遗憾的是,根据this issue 的说法,似乎在大多数版本的 pygame 中,它使用metal 作为 mac 的 SDL 后端,并且无法更改。

您可以将pygame.OPENGL 标志传递给pygame.display.set_mode(),但我不确定它究竟会如何影响任何事情。使用here 列出的其他标志可能是个好主意。

我建议您在 pygame 的官方 github repo 上 open an issue 提供必要的详细信息。此外,作为一种解决方法,您可以克隆 pygame,将 mac 上的默认渲染器更改为 OpenGL,编译,看看它是否有任何改进。您可以使用我上面提到的问题来了解您应该从哪里开始。

【讨论】:

  • 谢谢,这就是我要找的。由于不同的渲染器,它会变慢是有道理的,特别是因为 macOS 并不真正适合游戏......我可能做的是线程我的游戏,这样它更新屏幕的频率低于它更新玩家位置的频率,所以这些盒子将以更低的 fps 更快地以相同的速度运行。
【解决方案2】:

尝试以全屏模式运行游戏

pygame.display.set_mode((0, 0), pygame.FULLSCREEN)

【讨论】:

  • 奇怪的是,这对我很有效,它从糟糕的 11 FPS 或更差到 50 FPS
  • 这对我有用,但你能解释一下为什么吗?有没有办法让这个速度在非全屏模式下工作?
  • 嗯,从我能发现的情况来看,这似乎是游戏呈现方式的问题,就像上面提到的主要是因为 mac 的屏幕分辨率。但是,当游戏设置为全屏时,我认为它会降低分辨率,因为除了游戏之外没有任何东西可以运行,因此它的性能更好。希望这能解释它:)
  • 我想是的。我试图将游戏设置为在低分辨率模式下运行,但他们似乎已经在 OSX Catalina 中删除了该设置:(
  • 我刚刚检查过,它仍然存在。我也在运行 OSX Catalina。要找到它,您应该右键单击您尝试启动的应用程序,然后选择“获取信息”。弹出窗口打开后,您应该会找到“低分辨率模式”选项。
【解决方案3】:

MacOS 通常较慢

除非您可以安装第二个 RAM 棒,否则它将始终如此

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多