为什么pygame.display.update()比pygame.display.flip()慢?

Bob*_*421 0 python pygame

我不了解pygame.display.update()和之间的区别pygame.display.flip()

我都尝试过,似乎update()flip()... 慢

编辑

我的问题是为什么update()没有参数会比慢得多flip()

谢谢!

小智 5

你必须首先了解如何pygame.display.flippygame.display.update工作。

pygame.DOUBLEBUF设置屏幕模式后,Pygame实际上会维护两个屏幕:当前显示的活动屏幕和您(程序员)可以在后台更新的缓冲区(用户看不到任何东西)。

在缓冲区上完成编辑后,可以使用pygame.display.flip来切换活动屏幕和缓冲区。整个屏幕已更新。这是更新整个屏幕的推荐方法。另外,这是更新非软件屏幕(例如,OPENGL和硬件加速屏幕)的唯一方法。

pygame.display.update另一方面,将屏幕视为一组像素(称为软件屏幕)。这允许Pygame程序仅更新屏幕的一部分。由于只需要修改屏幕的一部分,因此速度更快。

现在,如果要更新整个屏幕(pygame.display.flip并且pygame.display.update没有任何参数),pygame.display.flip则速度更快。

记住,我说过OpenGL和HW加速的屏幕(也为SOFT-screens)维护一个缓冲区。绘制到此缓冲区的速度很慢,但是翻转非常快(在HW屏幕和OpenGL中)。使用pygame.display.update它更新整个屏幕的速度甚至更慢,因为它逐个像素地执行操作,并且没有硬件加速。