CCTextureCache類原始碼分析 3

2021-07-02 05:27:01 字數 1427 閱讀 5633

cctexturecache類原始碼分析(3):

1、在 (1) 中有提到過兩種特殊的格式,它們的處理方式和其他

格式的不同,這裡就分析一下這兩種特殊的格式的處理

//對於.pvr 和 .pkm 格式檔案需要特殊處理

if (std::string::npos != lowercase.find(".pvr"))

else if (std::string::npos != lowercase.find(".pkm"))

2、.pvr 格式分析,包括壓縮格式

---addpvrimage--->>:

cctexture2d * cctexturecache::addpvrimage(const char* path)

else

return texture;

}-------initwithpvrfile-------->>>

bool cctexture2d::initwithpvrfile(const char* file)

else

return bret;

}----------->>>

bool cctexturepvr::initwithcontentsoffile(const char* path)

//看到這裡就應該明白cctexturepvr包含的對pvr壓縮檔案的處理

if (lowercase.find(".ccz") != std::string::npos)

else if (lowercase.find(".gz") != std::string::npos)

else

if (pvrlen < 0)

m_unumberofmipmaps = 0;

m_uname = 0;

m_uwidth = m_uheight = 0;

m_ppixelformatinfo = null;

m_bhasalpha = false;

m_bforcepremultipliedalpha = false;

m_bhaspremultipliedalpha = false;

m_bretainname = false; // cocos2d integration

//creategltexture這個函式建立的opengl的紋理,因為pvr格式的和png普通檔案建立

//opengl紋理的引數不同,所以需要單獨建立。

if (! ((unpackpvrv2data(pvrdata, pvrlen) || unpackpvrv3data(pvrdata, pvrlen)) && creategltexture()) )

cc_safe_delete_array(pvrdata);

return true;

}3、.pkm 格式和上面的過程類似,就不分析。

CCTextureCache類原始碼分析 2

cctexturecache類原始碼分析 2 在cctexturecache類原始碼分析 1 中,我們分析了cctexturecache如何實現 紋理快取的,但是在分析的過程中,我們忽略了很多東西,比如ccimage類 原始碼分析 1 ccimage繼承自ccobject 2 成員變數,這些變數需要...

類值類與類指標類

類值類 行為像值的 class a a const a a ps new string a.ps i a.i 每個類物件有自己的乙份資源拷貝 a operator const a rhs a private string ps int i 一種優化拷貝賦值運算子的方法 copy and swap c...

巢狀類 匿名類 密封類

巢狀類 在c 中可以將乙個類定義在另乙個類的內部,外部的叫外部類,內部的巢狀類 namespace 27 set public void hello 巢狀類 public class web webname,weburl class program 匿名類 如果某個類的例項物件只會使用到一次,可以使...