NGUI 深入解析

NGUI的總綱領(lǐng)

UIGeometry好比為煮菜準(zhǔn)備食材

UIDrawCall好比是煮菜的工具(鍋,爐子等)-

UIPanel就是大廚了決定著什么時(shí)候該煮菜-

UIWidget(UILabel赏殃,UISprite和UITexture)是這道菜怎么樣的最終呈現(xiàn)

UIDrawCall

重要屬性

mActiveList 保存正在使用的UIDrawcall列表

mInactiveList 保存暫時(shí)不使用的UIDrawcall狸棍,方便再次使用霎褐,避免再次創(chuàng)建,增加GC。

mMaterial; 當(dāng)前UIDrawcall使用的材質(zhì)球

mTexture; 當(dāng)前材質(zhì)球使用的紋理

mShader 動(dòng)態(tài)渲染使用的shader

mTrans 緩存transform

mMesh 當(dāng)前UIDrawcall的mesh

mFilter 當(dāng)前UIdrawcall 的meshfilter

mRenderer 當(dāng)前UIDrawcall的meshRender

mDynamicMat 當(dāng)前UIDrawcall渲染的材質(zhì)球

注意:mDynamicMat和mMaterial區(qū)別是汉买,前者是實(shí)時(shí)渲染的材質(zhì)滋将,后者是保存渲染的數(shù)據(jù)

方法

CreateMaterial : 創(chuàng)建材質(zhì)球邻悬,根據(jù)mMaterial提供的數(shù)據(jù),動(dòng)態(tài)生成一個(gè)mDynamicMat材質(zhì)球來進(jìn)行實(shí)時(shí)渲染随闽。主要實(shí)現(xiàn)方法----替換shader

RebuildMaterial: 重建材質(zhì)球父丰,實(shí)現(xiàn)思路:首先把原有的mDynamicmat材質(zhì)球銷毀,然后新建一個(gè)mDynamicmat材質(zhì)球掘宪。再對mDynamicmat這個(gè)材質(zhì)球的渲染順序和主要紋理就行修改础米。

UpdateMaterials:更新材質(zhì)球,當(dāng)材質(zhì)球的屬性發(fā)生了變換時(shí)添诉,對材質(zhì)球進(jìn)行更新屁桑。

提示:這三者的關(guān)系:updateMaterials調(diào)用RebuildMaterial,然后再調(diào)用CreateMaterial栏赴。

UpdateGeometry:更新UIDrawcall的幾何數(shù)據(jù)蘑斧。然后把這些幾何數(shù)據(jù)放到UIDrawcall的mesh中進(jìn)行網(wǎng)格渲染。

OnWillRenderObject:mDynamicMat渲染進(jìn)行設(shè)置

UIGeometry

說明:所有的UIWidget類都含有一個(gè)這個(gè)類须眷,它是記錄UIWidget的幾何數(shù)據(jù)竖瘾。

重要屬性

Verts : 頂點(diǎn)

uvs : uv坐標(biāo)

cols: 顏色值

mRtpVerts : 相對于panel的頂點(diǎn)數(shù)據(jù)

mRtpNormal : 相對panel的法線

方法

ApplyTransform: 對幾何數(shù)據(jù)進(jìn)行給定的矩陣轉(zhuǎn)換

WriteToBuffers:導(dǎo)入對象的幾何數(shù)據(jù)

UIPanel

重要屬性

重要方法

FillAllDrawCalls: 重新繪制整個(gè)Panel,觸發(fā)條件:

新建一個(gè)dc和刪除一個(gè)dc

panel的初始

注意:這個(gè)很耗性能花颗,所以建議不要

要點(diǎn)

每一個(gè)UIWidget都有一個(gè)UIGeometry捕传,但是并不都有一個(gè)UIDrawCall,而是要通過Batch合并達(dá)到減少DrawCall的數(shù)量扩劝,UIDrawCall是由UIPanel生成的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庸论,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子棒呛,更是在濱河造成了極大的恐慌聂示,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件簇秒,死亡現(xiàn)場離奇詭異鱼喉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門扛禽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锋边,“玉大人,你說我怎么就攤上這事编曼〕枘” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵灵巧,是天一觀的道長搀矫。 經(jīng)常有香客問我,道長刻肄,這世上最難降的妖魔是什么瓤球? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮敏弃,結(jié)果婚禮上卦羡,老公的妹妹穿的比我還像新娘。我一直安慰自己麦到,他們只是感情好绿饵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓶颠,像睡著了一般拟赊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粹淋,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天吸祟,我揣著相機(jī)與錄音,去河邊找鬼桃移。 笑死屋匕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的借杰。 我是一名探鬼主播过吻,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔗衡!你這毒婦竟也來了纤虽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤粘都,失蹤者是張志新(化名)和其女友劉穎廓推,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翩隧,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了堆生。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片专缠。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖淑仆,靈堂內(nèi)的尸體忽然破棺而出涝婉,到底是詐尸還是另有隱情,我是刑警寧澤蔗怠,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布墩弯,位于F島的核電站,受9級特大地震影響寞射,放射性物質(zhì)發(fā)生泄漏渔工。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一桥温、第九天 我趴在偏房一處隱蔽的房頂上張望引矩。 院中可真熱鬧,春花似錦侵浸、人聲如沸旺韭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽区端。三九已至,卻和暖如春澳腹,著一層夾襖步出監(jiān)牢的瞬間珊燎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工遵湖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悔政,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓延旧,卻偏偏與公主長得像谋国,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子迁沫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容