2015-03-19 84 views
2

我在網上看到使用HWSURFACE|DOUBLEBUF|RESIZABLE來調整窗口的大小。HWSURFACE和DOUBLEBUF做什麼?

它的工作原理,但我不知道什麼HWSURFACEDOUBLEBUF實際上做。

我知道它代表硬件表面和雙緩衝區,但他們實際上幫助我什麼都不知道。

回答

2

我很失望,pygame文檔(例如http://www.pygame.org/docs/ref/display.html)似乎沒有解釋這一點,因爲我會認爲他們應該有。

雙緩衝作爲標記提及的描述,使用單獨的內存塊來應用所有繪製例程,然後將該塊(緩衝區)作爲單個操作複製到視頻內存。不這樣做可能會導致圖形失真。一個簡單的例子可能是由於在視頻刷新之前繪製背景的部分以及之後的其他部分(因此直到下一次刷新時才顯示)而引起的場景閃爍。

硬件表面是指使用視頻卡(「硬件」)上的存儲器來存儲繪圖而不是主存(「軟件」)。主要原因是主存儲器和視頻存儲器之間的帶寬往往很慢,所以能夠直接繪製可以加快速度。 SDL(PyGame建立在此之上)最初是爲了支持不支持硬件表面的舊視頻卡而開發的,因此您必須請求額外的功能以查看您的硬件是否可以利用它們。在這個時候,我的理解是,幾乎任何視頻卡(甚至在過去幾年內製作的低端筆記本電腦板上(甚至像Raspberry Pi這樣的東西,但我需要檢查它)都應該支持DOUBLEBUF和HWSURFACE。您可能想查看SDL文檔,看看是否提供您需要的任何其他詳細信息

希望可以幫到