DrawCall的介紹
引擎首先經(jīng)過簡單的可見性測試,確定攝像機(jī)可以看到的物體,然后把這些物體的頂點(diǎn)(包括本地位置裤唠、法線、UV等)莹痢,索引(頂點(diǎn)如何組成三角形)种蘸,變換(就是物體的位置、旋轉(zhuǎn)竞膳、縮放航瞭、以及攝像機(jī)位置等),相關(guān)光源顶猜,紋理沧奴,渲染方式(由材質(zhì)/Shader決定)等數(shù)據(jù)準(zhǔn)備好,然后通知圖形API——或者就簡單地看作是通知GPU——開始繪制长窄,GPU基于這些數(shù)據(jù)滔吠,經(jīng)過一系列運(yùn)算,在屏幕上畫出成千上萬的三角形挠日,最終構(gòu)成一幅圖像疮绷。
在Unity中,每次引擎準(zhǔn)備數(shù)據(jù)并通知GPU的過程稱為一次Draw Call嚣潜。這一過程是逐個(gè)物體進(jìn)行的冬骚,對(duì)于每個(gè)物體,不只GPU的渲染懂算,引擎重新設(shè)置材質(zhì)/Shader也是一項(xiàng)非常耗時(shí)的操作只冻。因此每幀的Draw Call次數(shù)是一項(xiàng)非常重要的性能指標(biāo),對(duì)于iOS來說應(yīng)盡量控制在20次以內(nèi)计技,這個(gè)值可以在編輯器的Statistic窗口看到喜德。
Unity每次在準(zhǔn)備數(shù)據(jù)并通知GPU渲染的過程稱為一次Draw Call。
一般情況下垮媒,渲染一次擁有一個(gè)網(wǎng)格并攜帶一種材質(zhì)的物體便會(huì)使用一次Draw Call舍悯。
對(duì)于渲染場景中的這些物體航棱,在每一次Draw Call中除了在通知GPU的渲染上比較耗時(shí)之外,切換材質(zhì)與shader也是非常耗時(shí)的操作萌衬。
Draw Call的次數(shù)是決定性能比較重要的指標(biāo)饮醇。