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 匿名類 如果某個類的例項物件只會使用到一次,可以使...