cocoscreator 2.4.x版本 drawcall優(yōu)化 第一期(掌握控制drawcall數(shù)量的必要知識)

1慷垮,測試環(huán)境

2,為何drawcall多會影響性能

3, 哪些組件支持渲染

4,影響drawcall的因素

5否淤,一句話介紹如何減少drawcall

6,哪些渲染組件不會被渲染

7棠隐,減少drawcall的理論(放在第二期)

8石抡,理論指導(dǎo)實(shí)踐,實(shí)踐印證理論助泽,demo實(shí)操(放在第三期)

9啰扛,總結(jié)(放在第三期)

「測試環(huán)境」 :

1.Mac 系統(tǒng)

2.cocoscreator 2.4.x版本

「為何drawcall多會影響性能?」

Drawcall: 繪制調(diào)用嗡贺,指cpu調(diào)用圖形繪制接口命令gpu進(jìn)行圖形繪制

「每一次繪制前隐解,CPU要準(zhǔn)備繪制參數(shù)(狀態(tài))比如色彩通道(color filter),繪圖方式(shader)等復(fù)雜的數(shù)據(jù)處理暑刃,然后Drawcall,如果有大量drawcall厢漩,cpu會很“忙”,而gpu的處理能力很強(qiáng),這時(shí)他可能閑置岩臣,不能充分發(fā)揮應(yīng)有的能力溜嗜,導(dǎo)致性能下降〖芑眩」

「哪些組件支持渲染:」 因?yàn)橐粋€(gè)drawcall是一次cpu調(diào)用圖形繪制接口命令 gpu進(jìn)行圖形繪制渲染的過程炸宵,所以需要了解cocoscreator中哪些組件支持渲染,才能更好的控制drawcall

**

  • !#en
  • Base class for components which supports rendering features.
  • !#zh
  • 所有支持渲染的組件的基類
  • @class RenderComponent
  • @extends Component
    */
    let RenderComponent = cc.Class({
    上面的注釋介紹 RenderComponent是所有渲染組件的基類谷扣,就是說他的子類和孫子類的組件土全。捎琐。。都是支持渲染的組件 可以全局搜索引擎裹匙,知道 粒子瑞凑, 動畫,文字(label),遮罩(mask),運(yùn)動軌跡(MotionStreak)概页,精靈(Sprite),繪圖(Graphics)地圖(tiledmap)等等籽御, 也可以在 cocoscreator界面 右側(cè)添加組件 -》渲染組件查看

「影響drawcall的因素:」

1,層級(zindex)

2,材質(zhì)(Material)(shander,貼圖(紋理),混合模式(blend))惰匙。只有擁有相同材質(zhì)的渲染節(jié)點(diǎn) 才可能進(jìn)行批處理技掏,貼圖,shader 決定了材質(zhì)项鬼,而層級則決定了相同的材質(zhì) 是否能 進(jìn)行合并處理 即合并網(wǎng)格(mesh) 合并drawcall.哑梳,

「一句話介紹如何減少drawcall:」 繪制狀態(tài)的變化 是導(dǎo)致drawcall增多的 主要原因。cocoscreator認(rèn)為要以深度(zindex)優(yōu)先的方式對渲染組件進(jìn)行渲染绘盟,并且cocoscreator認(rèn)為相同的材質(zhì)可以被批量渲染鸠真。所以具有相同材質(zhì)的并且連續(xù)的渲染節(jié)點(diǎn) 可以合并渲染 減少drawcall.

「連續(xù):」

1,層級相同添加順序相鄰,

2,層級不同 中間層級沒有其他材質(zhì)的渲染組件龄毡。比如 a的層級是1 b的層級是3 在 1-3層級之間沒有其他材質(zhì)的 渲染組件.

「影響drawcall的因素:」

「1弧哎,渲染節(jié)點(diǎn)(zindex)層級」

zIndex是節(jié)點(diǎn)的層級是用來對節(jié)點(diǎn)進(jìn)行排序的關(guān)鍵屬性,它決定一個(gè)節(jié)點(diǎn) 在兄弟節(jié)點(diǎn)之間的層級稚虎,和誰被優(yōu)先渲染。

1) zIndex 的取值介于 cc.macro.M IN_ZINDEX 和 cc.macro.MAX_ZINDEX 之間

即 - math.pow(2,15). 和 math.pow(2,15)-1之間偎捎。

實(shí)際操作中一般是 -1 到 n n一般不會超過1000

2)父節(jié)點(diǎn)主要根據(jù)節(jié)點(diǎn)的 zIndex 和添加次序來排序蠢终,擁有更高 zIndex 的節(jié)點(diǎn)將被排在后面(后被渲染先被渲染的圖在后被渲染的圖下面),如果兩個(gè)節(jié)點(diǎn)的 zIndex 一致茴她,先添加的節(jié)點(diǎn)會穩(wěn)定排在另一個(gè)節(jié)點(diǎn)之前寻拂。排在前面的節(jié)點(diǎn)先被渲染,也就是說兩張圖層級相同 先添加的會先被渲染 顯示出來的結(jié)果是 在后被渲染的圖的下面丈牢。

3)節(jié)點(diǎn)在 children 中的順序決定了其渲染順序祭钉。父節(jié)點(diǎn)永遠(yuǎn)在所有子節(jié)點(diǎn)之前被渲染

4)node節(jié)點(diǎn)放在Canvas或者父節(jié)點(diǎn)的zindex默認(rèn)值是0

5)決定節(jié)點(diǎn)層級的另一個(gè)因素是siblingIndex 他的權(quán)重低于 zIndex 當(dāng)我們在編輯器上編輯借點(diǎn)的時(shí)候 兄弟節(jié)點(diǎn)之間的zIndex相同,為什么會出現(xiàn)一個(gè)先被渲染一個(gè)后被渲染呢 己沛,就是因?yàn)?siblingIndex 不同慌核,排在前面的siblingIndex要小一些后面的要大一些 最終后面的后選擇然 層級就在 前面的上邊。 也就是說 zindex 其決定性作用申尼,zIndex相同 就比較siblingIndex來判定最終層級垮卓。

「2,材質(zhì)」

1)紋理(貼圖)

2)shander:渲染器师幕,能夠讀懂的點(diǎn)和顏色的對應(yīng)關(guān)系的程序粟按,簡單來說就是繪圖的方式)

只有擁有相同材質(zhì)的物體才可以進(jìn)行批處理。因此,如果你想要得到良好的批處理效果灭将,你需要在程序中盡可能地復(fù)用材質(zhì)和物體疼鸟。

如果你的兩個(gè)材質(zhì)僅僅是紋理不同,那么你可以通過 紋理拼合 操作來將這兩張紋理拼合成一張大的紋理庙曙。一旦紋理拼合在一起空镜,你就可以使用這個(gè)單一材質(zhì)來替代之前的兩個(gè)材質(zhì)了。

「哪些渲染組件不會被渲染」

cocoscreator 認(rèn)為 透明度 === 0. 或者 active = false 的渲染組件 不會被渲染矾利。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姑裂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子男旗,更是在濱河造成了極大的恐慌舶斧,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件察皇,死亡現(xiàn)場離奇詭異茴厉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)什荣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門矾缓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稻爬,你說我怎么就攤上這事嗜闻。” “怎么了桅锄?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵琉雳,是天一觀的道長。 經(jīng)常有香客問我友瘤,道長翠肘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任辫秧,我火速辦了婚禮束倍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盟戏。我一直安慰自己绪妹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布柿究。 她就那樣靜靜地躺著喂急,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笛求。 梳的紋絲不亂的頭發(fā)上廊移,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天糕簿,我揣著相機(jī)與錄音,去河邊找鬼狡孔。 笑死懂诗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苗膝。 我是一名探鬼主播殃恒,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辱揭!你這毒婦竟也來了离唐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤问窃,失蹤者是張志新(化名)和其女友劉穎亥鬓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體域庇,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嵌戈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了听皿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熟呛。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尉姨,靈堂內(nèi)的尸體忽然破棺而出庵朝,到底是詐尸還是另有隱情,我是刑警寧澤又厉,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布偿短,位于F島的核電站,受9級特大地震影響馋没,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜降传,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一篷朵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧婆排,春花似錦声旺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赞枕,卻和暖如春澈缺,著一層夾襖步出監(jiān)牢的瞬間坪创,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工姐赡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留莱预,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓项滑,卻偏偏與公主長得像依沮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子枪狂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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