pygame.display.update 和 pygame.display.flip 之间的区别

Difference between pygame.display.update and pygame.display.flip

如题所示,有什么区别吗?我当时使用 pygame.display.flip,我在 Internet 上看到他们没有使用翻转,而是使用 pygame.display.update。哪个更快?

Flip 将始终更新整个屏幕。如果你不给出参数,更新也会更新整个屏幕。但是,如果您将表面作为参数,它将仅更新这些表面。所以它可以更快,这取决于你给它的表面数量以及它们的宽度和高度。

pygame.display.flip and pygame.display.update 的主要区别在于,

  • display.flip() 会更新整个显示的内容
  • display.update() 允许更新屏幕的一部分,而不是整个屏幕区域。不传递参数,更新整个显示

要告诉 PyGame 它应该更新屏幕的哪些部分(即在您的显示器上绘制),您可以传递一个 pygame.Rect 对象 ,或者它们的序列到 display.update() 函数。 PyGame 中的 Rect 存储 widthheight 以及 x- 和 y- 位置坐标。

PyGame 的 built-in dawning functions and the .blit() 方法例如 return 一个 Rect,所以你可以简单地将它传递给 display.update() 函数以便只更新 "new"绘制区域.

由于 display.update() 仅更新整个屏幕的某些部分display.flip() 相比,display.update() 在大多数情况下更快.

  • pygame.display.flip() 更新整个屏幕。
  • pygame.display.update() 仅更新特定部分但不带参数,类似于 pygame.display.flip().

如果您正在使用双缓冲,那么您希望使用 flip()。只有一个缓冲区都可以工作,除非你专门创建一个双缓冲 window,否则你正在使用单缓冲,例如:

pygame.display.set((w, h), pygame.DOUBLEBUF)

如果您每帧执行一次完整的显示更新,速度实际上是相同的,所以在单缓冲区模式下使用哪个并不重要。