我在网上看到了使用HWSURFACE|DOUBLEBUF|RESIZABLE调整窗口大小的方法。

它可以工作,但是我不确定HWSURFACEDOUBLEBUF实际做什么。

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

最佳答案

我对pygame文档(例如http://www.pygame.org/docs/ref/display.html)似乎没有解释这一点感到失望,因为我本以为他们应该这样做。

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

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

希望能有所帮助

10-08 01:57