cocos2dx裡面,sprite本身不消耗多少記憶體,只是關聯的材質檔案消耗記憶體。假設有10個sprite關聯同乙個材質,也不會有10倍消耗。
關於占用的材質記憶體,我覺得還有好幾種優化手段:
1、對於背景圖,因為不需要考慮透明問題。載入材質時可以使用 rgb565 格式(5位紅色,6位綠色,5位藍色),每乙個畫素消耗的記憶體是16bit = 2byte。比預設的 rgba8888 消耗的記憶體少一半。
2、大尺寸的圖可以適當縮小,顯示時拉伸放大。比如960x640的圖可以縮小為768x512,消耗的記憶體減少一半。
3、有些sprite不需要那麼多的色彩,可以用 rgba4444 格式載入,乙個畫素也只消耗2byte,減少一半。可以用 texturepacker 這樣的工具處理原始 32bitpng ,生成 rgba4444 格式的材質檔案。
4、多個小圖合併到一起,做成 sprite sheet,可以顯著降低記憶體使用,效能也會好一點。
5、超大背景圖裁剪成多個小塊,需要顯示哪個區域才載入對應的塊。程式上覆雜不少,但總比記憶體不足崩潰掉好。
以上優化方法,我個人實踐下來效果還是很明顯的。
1。opengl一般都用2的n次方貼圖尺寸,所以製作貼圖時使它盡量接近2的n次方值,比如128*128。如果有個切片組成的貼圖尺寸是130*100,那就嘗試重新排布切片,使它控制在128*128以內,這樣能減少一半記憶體。
2。可以使用小圖放大來貼,但我建議是對於背景圖這樣,對清晰度要求不高時,將尺寸按整數倍縮小貼圖,然後貼圖時採用nearest臨近差值演算法,這樣效果可以接受,效率又高。
3。將切片合成貼圖時,要注意將使用時機和頻率相當的切片放在一起,這樣可以做到當前載入進記憶體的貼圖,都是使用頻率最高的。而當前不用的貼圖要及時釋放掉。遊戲玩家一般都可以接受等待進度條載入一些東西。
4。遊戲前期可以用模擬器測試,後期一定要真機+instruments測試,xcode的instruments功能很強,可以檢測leak,opengl優化建議,allocation等。
5。遊戲注意避免在logic迴圈或者render迴圈中反覆分配記憶體,造成惡性增長。
6。png要用ps針對web壓縮一下,可以縮小檔案尺寸,雖然不會減少執行時記憶體分配,但可以減少貼圖載入的io時間
cocos2d x記憶體優化
程式包的 體積 優化方法 首先 你需要很清楚當前自己專案什麼地方佔的體積最多,例如動畫序列多少mb 地圖佔多少mb等等,都要提前做乙個check 別總是認為 可能佔的多,要詳細的知道才行!1.採用工具對資源進行 打包 例如texturepacker 等工具。2.採用png壓縮工具等,在打包前對每張進...
cocos2dx記憶體優化
一 cocos2dx之如何優化記憶體使用 高階篇 一 記憶體優化原則 為了優化應用記憶體,你應該知道是什麼消耗了你應用的大部分記憶體,答案就是texture 紋理 它幾乎佔據了90 的應用記憶體。那麼我們應該盡力去減小我們應用的紋理記憶體使用,否則我們的應用程序可能會被系統殺死。為了減少記憶體警告,...
cocos2dx優化記憶體技巧
一 記憶體優化原則 為了優化應用記憶體,你應該知道是什麼消耗了你應用的大部分記憶體,答案就是texture 紋理 它幾乎佔據了90 的應用記憶體。那麼我們應該盡力去減小我們應用的紋理記憶體使用,否則我們的應用程序可能會被系統殺死。為了減少記憶體警告,這裡我們給出兩個普遍的關於cocos2dx遊戲記憶...