Cocos2d x 引擎原始碼中的紋理優化

2021-10-24 09:22:24 字數 616 閱讀 8755

紋理其實也就是gpu中的一塊buffer,這塊buffer儲存了紋理的寬*高那麼多個畫素點的資訊。比如寬高為100*100的紋理,那麼這塊buffer就儲存了1w個畫素點的資訊,每個畫素點所佔據的空間是由紋理格式決定的。

所以紋理佔據的空間大小,和紋理的尺寸相關(長*寬)、紋理格式相關。

1.壓縮紋理。(jpg、png等本身就是一種壓縮格式,能減少遊戲包的大小,但是對減少gpu記憶體大小沒有多少貢獻) pvr、etc這些格式的(gpu能直接渲染這些壓縮紋理格式),儲存著生成壓縮紋理所需要的資訊。

2.紋理的尺寸在gpu中是有限制的,寬高不能超過glmaxtexturesize,是有最高 高度值的,一般情況下是2048*2048。對齊的位元組數越高,系統就越能對其優化。所以使用紋理時盡量使用2的冪次方作為寬度,就能被8,4,2等整除,而不是只能被1整除。

通過讀取一張原始可以獲取到生成紋理所必須的所有的紋理資訊,比如說:用於生成紋理內容的每個畫素點的顏色值(rgba ),原始的寬和高,原始對應的紋理是否是壓縮,以及原始的format和type。

cocos2d x 原始碼剖析(2)

上次講到cocos2d x的main loop是下面這句 我們來看看這個函式的內部實現 return0 看看,我沒有欺騙大家吧。這個函式在設計的時候想要參照main函式返回乙個int值來表示執行結果,但是你知道的外部呼叫中完全沒有進行處理,略坑爹。來深入這個函式的內部 void startmainl...

cocos2d X學習之引擎原始碼目錄結構介紹

cocos2d x的目錄結構如下 目錄的具體結構介紹如下 cocos2dx cocos2d x引擎的核心部分,存放了引擎的大部分原始檔 debug.win32 在windows 上除錯輸出目錄 doxygen 生成doxygen專案文件時需要的配置檔案 hellolua 在遊戲中使用lua的示例 h...

cocos2d x 原始碼剖析(1)

原文出處 我認為在看這些文章的時候,最好有一些cocos2d x的經驗。起碼能新建乙個cocos2d x的hello world工程。而且這些文章並不是用來入門和教你如何使用cocos2d x的,我的目標是看完這些文章之後,寫乙個完整的2d引擎將沒有問題。而且能夠為cocos2d x查漏補缺,看看那...