cocos2dx 紋理快取

2021-08-18 13:57:55 字數 845 閱讀 4248

快取(cache)機制的原理是什麼?

把新加進記憶體的資源做乙個hashmap儲存,每乙個資源加乙個key。每次載入資源,先從快取中尋找,如果找到就直接返回,否則載入到記憶體後再返回。

一、自動快取紋理

直接使用display.newsprite(filename)建立精靈,引擎內部會自動把紋理載入到快取中

二、手動快取紋理

(1)首先,需要獲取引擎的紋理快取例項

local texturecache = cc.director:getinstance():gettexturecache()
(2)然後呼叫例項的addimage方法

local texture = texturecache:addimage(filename)
注意:

addimage是同步載入,如果很多,可能需要非同步載入紋理(addimageasync)

三、獲取紋理

local texture = texturecache:gettextureforkey(filename)
如果獲取不到紋理的話,gettextureforkey會返回nil;

四、清理快取(removeunusedtextures、removetextureforkey、removealltextures)

cc.director:getinstance();gettexturecache():removeunusedtextures()
removeunusedtextures會釋放當前所有引用計數為1的紋理(比如場景切換後,此方法可是釋放前一場景載入的紋理資源);

cocos2dx 紋理快取

在遊戲中需要載入大量的紋理,這些操作都是很耗記憶體和資源的。當遊戲中有個介面用到的非常多,第一次點進這介面時速度非常慢 因為要載入繪製很多 出現卡頓,我們可以使用texturecache提前非同步載入紋理,等載入結束,進入到這個介面再使用這些速度就會非常快。texture2d 紋理,即加載入記憶體後...

cocos2dx 紋理快取的理解

在cocos2dx中顯示一張,需要首先把它從檔案讀取到記憶體,再根據檔案格式進行解碼,轉換為gpu可以識別的格式,這塊可以被gpu識別的 記憶體中的影象資料,被稱為紋理。為了節省記憶體空間,減少大量瑣碎的小檔案的讀取引發的多次i o操作,將多個紋理拼成為乙個大的紋理圖,成為紋理圖集。就像是給別人看你...

cocos2d x 紋理畫素格式

紋理的畫素格式是影象儲存在gpu記憶體的方式。你可能會見到以下畫素格式 紅色通道 綠色通道 藍色通道和alpha 通道各8位。如果想獲得最好的質量,使用這種格式是很靠譜的。但它會占用的記憶體會比16位的紋理多一倍,在iphone上記憶體是很寶貴的資源,這個 自然的,它的運算速度也是相對較慢的。常用的...