我正在製作一款遊戲,它具有很多高分辨率圖像,在30 FPS下,因此性能對於這種特殊情況來說是一個大問題。 我正在檢查內存消耗,並意識到一組圖像,其中有2~3mb的硬盤驅動器,加載到遊戲時,它佔用30mb。有沒有減少內存消耗的方法,而不會影響CPU使用率?Pygame表面太重
-1
A
回答
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
相關問題
- 1. Pygame - 表面淡入/淡出
- 2. pygame的表面從RGB565
- 3. 如何擺脫pygame表面?
- 4. PyGame,表面沒有顯示
- 5. pygame的表面不顯示
- 6. pygame blitting只更新表面
- 7. Pygame代碼太慢了
- 8. 更新Pygame表面的一個方面
- 9. 「CoreAnimation:表面太大」
- 10. Pygame:保存對象/類/表面列表
- 11. Pygame重啓?
- 12. Pygame - 重力法
- 13. pygame pygame高效地改變曲面
- 14. Pygame中的2x2像素表面
- 15. 在pygame表面顯示cv2.VideoCapture圖像
- 16. pygame中的繪製表面透明度?
- 17. Pygame的表面變化爲對象
- 18. Pygame - 將表面作爲圖像存儲
- 19. 在Pygame中更新一個表面
- 20. 繪製到pygame中的精靈表面
- 21. Pygame將表面轉換爲精靈
- 22. 多個子彈pygame太空入侵者
- 23. Pygame - 太空侵略者外星人
- 24. PyGame - 無法將一個表面粘貼到另一個表面
- 25. 在PyGame中將小表面映射到較大表面上
- 26. 側面滾動Pygame
- 27. Pygame重力劇本
- 28. Pygame文本重疊
- 29. pygame中的重力
- 30. 在子報表中重複的值。太多頁面
30Mb似乎不太多。你確定這是你的性能問題的根源嗎? – jonrsharpe 2014-10-28 19:31:50
也許是減少圖像的大小。 – Anthony 2014-10-28 19:32:17
jonrsharpe 30mb並不多,但那只是一組圖片。遊戲大約有27套,因此,在最差的遊戲中,810MB將佔用RAM – 2014-10-28 19:39:31