關(guān)于creator label渲染原理和draw call問題

Creator label在使用系統(tǒng)字體的時候沾鳄,引擎系統(tǒng)文本的實現(xiàn)是先將文本繪制到 Canvas慨飘,然后再生成圖片給 Label 組件使用。

文本緩存類型(Cache Mode)

屬性功能說明

NONE? ? ? ? ?默認(rèn)值译荞,Label 中的整段文本將生成一張位圖瓤的。


BITMAP? ? ? 選擇后,Label 中的整段文本仍將生成一張位圖圈膏,但是會盡量參與?動態(tài)合圖。只要滿足動態(tài)合圖的要求篙骡,就會和動態(tài)合圖中的其它 Sprite 或者? ? ? ? ? ? ? ? ? ? ? ? ? Label 合并 Draw Call稽坤。由于動態(tài)合圖會占用更多內(nèi)存,該模式只能用于文本不常更新的 Label糯俗。

? ??????????????????補(bǔ)充:和 NONE 模式一樣尿褪,BITMAP 模式會強(qiáng)制給每個 Label 組件生成一張位圖,不論文本內(nèi)容是否等同叶骨。如果場景中有大量相同文本的 ????????????????????Label茫多,建議使用 CHAR 模式以復(fù)用內(nèi)存空間。


CHAR?? ? ? ? ?原理類似 BMFont忽刽,Label 將以“字”為單位將文本緩存到全局共享的位圖中天揖,相同字體樣式和字號的每個字符將在全局共享一份緩存夺欲。能支持文本????的頻繁修改,對性能和內(nèi)存最友好今膊。不過目前該模式還存在如下限制些阅,我們將在后續(xù)的版本中進(jìn)行優(yōu)化:

????????????????1、該模式只能用于字體樣式和字號固定(通過記錄字體的 fontSize斑唬、fontFamily市埋、color、outline 為關(guān)鍵信息恕刘,以此進(jìn)行字符的重復(fù)使用缤谎,其他有使用特殊自定義文本格式的需要注意),并且不會頻繁出現(xiàn)巨量未使用過的字符的 Label褐着。這是為了節(jié)約緩存坷澡,因為全局共享的位圖尺寸為 20482048,只有場景切換時才會清除含蓉,一旦位圖被占滿后新出現(xiàn)的字符將無法渲染频敛。

????????????????2、不能參與動態(tài)合圖(同樣啟用 CHAR 模式的多個 Label 在渲染順序不被打斷的情況下仍然能合并 Draw Call)

????????????????3. 該模式在?*原生平臺上使用 FreeType 渲染馅扣。


對于 Label 組件斟赚,Src Blend Factor?常用的設(shè)置主要有兩種,包括?SRC_ALPHA?和?ONE

當(dāng)使用?SRC_ALPHA?模式時差油,可以通過頂點數(shù)據(jù)將透明度傳遞到 Shader 中拗军,然后在 Shader 中進(jìn)行像素透明度的計算,因此文本的透明度就不需要在繪制到 Canvas 時處理厌殉。在這種模式下食绿,Label 節(jié)點透明度變化時侈咕,就不需要頻繁的調(diào)用 updateRenderData 進(jìn)行 Canvas 的重新繪制公罕,可以減少 API 調(diào)用以及頻繁重繪造成的性能消耗。

當(dāng)使用?ONE?模式時耀销,文本圖片的透明度需要做預(yù)乘處理楼眷,所以在 Canvas 繪制時就需要進(jìn)行透明度的處理。在這種模式下熊尉,Label 的節(jié)點透明度變化時就需要頻繁的調(diào)用 updateRenderData罐柳,進(jìn)行文本內(nèi)容的重繪。


需要注意的是不同的混合模式狰住,會影響與其他節(jié)點的動態(tài)合批张吉,例如:

當(dāng)?Src Blend Factor?選擇?ONE?模式,Cache Mode?選擇?BITMAP?緩存模式催植,則使用的是?動態(tài)圖集肮蛹,可能會導(dǎo)致動態(tài)合批失效勺择。

若?Cache Mode?選擇?CHAR?緩存模式,Src Blend Factor?會默認(rèn)使用?SRC_ALPHA?模式伦忠,因為是全局共用同一張字符圖集省核,無法進(jìn)行不同的模式兼容。

對于?原生平臺昆码,在?SRC_ALPHA?模式下气忠,為了消除文本的黑邊問題,在文本圖片數(shù)據(jù)返回時赋咽,需要做反預(yù)乘處理旧噪。

對于使用大量文本節(jié)點或者使用?SHRINK?模式的大段文本內(nèi)容來說,做反預(yù)乘操作會有不少的性能消耗脓匿,開發(fā)者需要依據(jù)不同的使用場景以及文本內(nèi)容進(jìn)行合理的選擇舌菜,以便在不同的平臺能夠減少重繪帶來的性能消耗。具體的使用場景說明如下:

如果?Cache Mode?選擇?CHAR?緩存模式亦镶,只能使用?SRC_ALPHA日月。

如果只是發(fā)布?Web?平臺,推薦使用默認(rèn)的?SRC_ALPHA?模式缤骨。因為?ONE?模式下爱咬,透明度變化會造成頻繁的重繪。另外使用?BITMAP?緩存模式以及?CHAR?緩存模式也無法生效绊起。

如果需要發(fā)布?Native?平臺精拟,并且文本使用了?SHRINK?等會頻繁重繪的排版模式,界面創(chuàng)建時會因為文本頻繁的反預(yù)乘操作導(dǎo)致性能消耗比較明顯虱歪,可以選擇使用?ONE?模式避免反預(yù)乘帶來的卡頓蜂绎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笋鄙,隨后出現(xiàn)的幾起案子师枣,更是在濱河造成了極大的恐慌,老刑警劉巖萧落,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件践美,死亡現(xiàn)場離奇詭異,居然都是意外死亡找岖,警方通過查閱死者的電腦和手機(jī)陨倡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來许布,“玉大人兴革,你說我怎么就攤上這事∶弁伲” “怎么了杂曲?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵箕昭,是天一觀的道長。 經(jīng)常有香客問我解阅,道長落竹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任货抄,我火速辦了婚禮述召,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蟹地。我一直安慰自己积暖,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布怪与。 她就那樣靜靜地躺著夺刑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪分别。 梳的紋絲不亂的頭發(fā)上遍愿,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音耘斩,去河邊找鬼沼填。 笑死,一個胖子當(dāng)著我的面吹牛括授,可吹牛的內(nèi)容都是我干的坞笙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了航邢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤澎灸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡腊徙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年简十,在試婚紗的時候發(fā)現(xiàn)自己被綠了檬某。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡螟蝙,死狀恐怖恢恼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胰默,我是刑警寧澤场斑,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布漓踢,位于F島的核電站,受9級特大地震影響漏隐,放射性物質(zhì)發(fā)生泄漏喧半。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一青责、第九天 我趴在偏房一處隱蔽的房頂上張望挺据。 院中可真熱鬧,春花似錦脖隶、人聲如沸扁耐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婉称。三九已至,卻和暖如春构蹬,著一層夾襖步出監(jiān)牢的瞬間王暗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工庄敛, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留瘫筐,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓铐姚,卻偏偏與公主長得像策肝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子隐绵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

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