我使用pygame进行2D游戏。我注意到我不必每帧渲染整个场景。如果我逐步绘制我的场景并定期翻动它,我会得到我想要的东西。
然而,我记得很久以前在SDL / OpenGL上,根据硬件标记,你可以在表面之间翻转,或者将后缓冲区的副本发送到前端缓冲区。
在调用pygame.display.flip()时,是否有任何保证? 有什么方法可以迫使一种行为超过另一种行为?
答案 0 :(得分:1)
如果您没有将HWSURFACE | DOUBLEBUF
传递给pygame.display.set_mode,那么您只能使用一个缓冲区进行绘制。这直接对应于SDL 1.2' s {{ 3}}。不使用双缓冲可能导致直接在前缓冲区中绘制,这是可见的;传统上(主要在控制台和家用计算机中)这是在垂直消隐期间完成的,以避免伪影。使用双缓冲,翻盖将以这种方式同步,以避免撕裂。标志选择程序看到的接口;在没有它的情况下,OS或硬件级别可能仍然存在双缓冲,并且双缓冲可以是软件模拟,即使它也是如此。