Cocos2d x 如何優化記憶體使用

2021-07-14 22:33:35 字數 1543 閱讀 8217

可用一些**獲取遊戲記憶體使用的其他資訊,如下所示:

cctexturecache::sharedtexturecache()->dumpcachedtextureinfo();
呼叫這個**後,遊戲便會在debug模式執行,這時你會在xcode控制台視窗看到一些格式工整的日誌資訊。

cocos2d: cocos2d: 「cc_fps_images」 rc=5 id=3 256 x 32 @ 16 bpp => 16 kb

cocos2d: cocos2d: 「***/hd/actor.pvr.ccz」 rc=1059 id=4 2048 x 2048 @ 32 bpp => 16384 kb

cocos2d: cocos2d: cctexturecache dumpdebuginfo: 2 textures, for 16400 kb (16.02 mb)

從上可以看到會顯示紋理的名稱、引用計數、id、大小及每畫素的位數。最重要的是會顯示記憶體的使用情況。如「cc_fps_images」指消耗了16kb記憶體,而「actor.pvr.ccz」消耗了16m記憶體。

這是最重要的的優化等級。因為我們要在cocos2d-x引擎頂層編譯遊戲,引擎自身會提供一些優化選項。 在這個等級我們可以進行大部分優化。簡而言之,我們可以優化紋理、音訊、字型及粒子的記憶體使用。

一幀一幀載入遊戲資源

減少繪製呼叫,使用「ccspritebatchnode」

載入紋理時按照從大到小的順序

避免高峰記憶體使用

使用載入螢幕預載入遊戲資源

需要時釋放空閒資源

收到記憶體警告後釋放快取資源.

使用紋理打包器優化紋理大小、格式、顏色深度等

使用jpg格式要謹慎!

請使用rgb4444顏色深度16位紋理

請使用npot紋理,不要使用pot紋理

避免載入超大紋理

推薦1024*1024 npot pvr.ccz紋理集,而不要採用raw png紋理

使用npot紋理

nopt是「non power of two」的縮寫,譯作「不是2的冪」。npot stands for 「non power of two」. 在cocos2d1.x的時候,你必須在ccconfig.h檔案中開啟對npot的支援,但是,cocos2d 2.x就不需要了,它預設是支援npot的。所有3代(iphone 3gs)以後的ios設定都支援cocos2d 2.x(因為它們支援opengl es2.0),所以也都能支援npot紋理。

如果紋理圖集(texture atlas)使用npot的紋理,它將有乙個具大的優勢:它允許tp更好地壓縮紋理。因此,我們會更少地浪費紋理圖集的空白區域。而且,這樣的紋理在載入的時候,會少使用1%到49%左右的記憶體。而且你可以使用tp強制生成npot的紋理。(你只需要勾選「allow free size」即可)

為什麼要關心npot呢?因為蘋果的opengl驅動有乙個bug,導致如果使用pot的紋理,則會產生額外33%的記憶體消耗。

cocos2d x記憶體優化

程式包的 體積 優化方法 首先 你需要很清楚當前自己專案什麼地方佔的體積最多,例如動畫序列多少mb 地圖佔多少mb等等,都要提前做乙個check 別總是認為 可能佔的多,要詳細的知道才行!1.採用工具對資源進行 打包 例如texturepacker 等工具。2.採用png壓縮工具等,在打包前對每張進...

cocos2dx記憶體優化

一 cocos2dx之如何優化記憶體使用 高階篇 一 記憶體優化原則 為了優化應用記憶體,你應該知道是什麼消耗了你應用的大部分記憶體,答案就是texture 紋理 它幾乎佔據了90 的應用記憶體。那麼我們應該盡力去減小我們應用的紋理記憶體使用,否則我們的應用程序可能會被系統殺死。為了減少記憶體警告,...

cocos2dx記憶體優化

cocos2dx裡面,sprite本身不消耗多少記憶體,只是關聯的材質檔案消耗記憶體。假設有10個sprite關聯同乙個材質,也不會有10倍消耗。關於占用的材質記憶體,我覺得還有好幾種優化手段 1 對於背景圖,因為不需要考慮透明問題。載入材質時可以使用 rgb565 格式 5位紅色,6位綠色,5位藍...