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

时间:2015-03-28 08:03:19

标签: python-2.7 pygame

就像标题所暗示的那样,有什么区别吗?我正在使用pygame.display.flip,我在互联网上看到,他们使用pygame.display.update而不是使用翻转。哪一个更快?

4 个答案:

答案 0 :(得分:31)

pygame.display.flippygame.display.update之间的主要区别在于

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

要告诉PyGame它应该更新哪个屏幕部分(即在你的显示器上绘图)你可以将一个 pygame.Rect对象或它们的序列传递给{{1功能。 PyGame中的一个Rect存储display.update()width以及height - 和x - 该位置的坐标。

PyGame的built-in dawning functions.blit()方法返回一个Rect,所以你可以简单地将它传递给y函数,以便只更新&#34 ;新"绘制区域。

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

答案 1 :(得分:6)

翻转将始终更新整个屏幕。如果您不提供参数,更新也会更新整个屏幕。但是如果你将surface(s)作为参数,它将只更新这些表面。所以它可以更快,取决于你给它的表面数量和它们的宽度和高度。

答案 2 :(得分:0)

  • pygame.display.flip() 更新整个屏幕。
  • pygame.display.update() 仅更新特定部分,但没有参数,其工作方式类似于 pygame.display.flip()。

答案 3 :(得分:0)

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

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

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