HWSURFACE和DOUBLEBUF做什么?

Mic*_*Che 4 python pygame double-buffering

我在网上看到使用HWSURFACE|DOUBLEBUF|RESIZABLE来调整窗口大小。

它的工作原理,但我不知道是什么的HWSURFACEDOUBLEBUF实际做。

我知道它代表硬件表面和双缓冲区,但是它们对我的实际帮助我一无所知。

Foo*_*oon 7

令我失望的是pygame文档(例如http://www.pygame.org/docs/ref/display.html)似乎并没有解释这一点,因为我认为他们应该拥有。

正如标记的描述所提到的,双缓冲是使用一个单独的内存块来应用所有绘制例程,然后将该块(缓冲区)作为单个操作复制到视频内存中。否则可能会导致图形失真。一个简单的例子就是场景的闪烁,其原因是在刷新视频之前先绘制背景的一部分,然后再刷新其他部分(因此直到下一次刷新才显示它们)。

硬件表面是指使用视频卡(“硬件”)上的内存来存储绘图,而不是使用主内存(“软件”)。这样做的主要原因是主内存和视频内存之间的带宽趋于变慢,因此能够直接绘制可以加快速度。SDL(PyGame构建在其之上)最初是为支持不支持硬件表面的较旧视频卡而开发的,因此您必须请求其他功能才能查看硬件是否可以利用它们。就目前而言,我的理解是,几乎任何视频卡(甚至是最近几年内生产的低端笔记本电脑的板载视频卡(甚至是Raspberry Pi之类的东西,但我都需要检查)都应支持DOUBLEBUF和HWSURFACE。

希望能有所帮助