我不明白pygame.display.update()
和pygame.display.flip()
之间的区别。
我已尝试过两者,似乎update()
比flip()
...
修改:
我的问题是为什么没有参数的update()
比flip()
慢得多。
谢谢!
答案 0 :(得分:4)
您必须先了解pygame.display.flip
和pygame.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-screen和OpenGL中)。使用pygame.display.update
更新整个屏幕的速度甚至更慢,因为它会逐像素地执行并且没有硬件加速。