2014-10-28 38 views
-1

我正在製作一款遊戲,它具有很多高分辨率圖像,在30 FPS下,因此性能對於這種特殊情況來說是一個大問題。 我正在檢查內存消耗,並意識到一組圖像,其中有2~3mb的硬盤驅動器,加載到遊戲時,它佔用30mb。有沒有減少內存消耗的方法,而不會影響CPU使用率?Pygame表面太重

+2

30Mb似乎不太多。你確定這是你的性能問題的根源嗎? – jonrsharpe 2014-10-28 19:31:50

+0

也許是減少圖像的大小。 – Anthony 2014-10-28 19:32:17

+0

jonrsharpe 30mb並不多,但那只是一組圖片。遊戲大約有27套,因此,在最差的遊戲中,810MB將佔用RAM – 2014-10-28 19:39:31

回答

0

你在說的是一個的圖像文件。但是,這些圖像文件最有可能被壓縮,因此文件較小。要找到所有圖像的未壓縮大小,您應計算每個圖像的內存佔用量(最有可能爲width * height * bytes per pixel(RGB爲3個字節,RGBA爲4),這與30 MB內存佔用情況相比如何(例如,一個RGB圖像是1680x1080屏幕,你需要約5.3 MB的屏幕內存)?

回答你的問題:我不認爲你將能夠減少你的應用程序的內存佔用(不犧牲CPU)能夠處理壓縮紋理/圖像(例如DXT),看起來PyGame可能也是如此(在PyGame Surface documentation中搜索「壓縮」),但我在PyGame中找不到任何東西這會讓你選擇是否要壓縮紋理或紋理實際存在的位置(視頻內存,操作內存,兩者)。取決於您正在運行的操作系統和硬件。

一種方法可能是降低文件的分辨率或僅加載該特定場景所需的文件。

有更好的PyGame知識的人可能會提供進一步的見解。

+0

謝謝你,我剛剛測試了你說的話,它非常合適。加載一個PNG集和一個TGA集最終在相同的內存分配,所以我想我會尋找一些更具體的建議現在 – 2014-10-28 20:37:53