Unity面試整理

2022-07-21 14:00:26 字數 1159 閱讀 3125

1  什麼是drawcall,有什麼方法可以減少drawcall

drawcall是啥?其實就是對底層圖形程式(比如:opengl es)介面的呼叫,以在螢幕上畫出東西。

在每次呼叫draw call之前,cpu需要向gpu傳送很多內容,包括資料,狀態,命令等。在這一階段,cpu需要完成很多任務作,例如檢查渲染狀態等。而一旦cpu完成了這些準備工作,gpu就可以開始本次的渲染。gpu的渲染能力是很強的,渲染300個和3000個三角網格通常沒有什麼區別,因此渲染速度往往快於cpu提交命令的速度。如果draw call的數量太多,cpu就會把大量時間花費在提交draw call命令上,造成cpu的過載。

減少drawcall

1)  使用draw call batching,也就是描繪呼叫批處理。unity在執行時可以將一些物體進行合併,從而用乙個描繪呼叫來渲染他們

draw call batching本身,也還會細分為2種。

static batching 靜態批處理

那要如何使用靜態批來減少draw call呢?你只需要明確指出哪些物體是靜止的,並且在遊戲中永遠不會移動、旋轉和縮放。想完成這一步,你只需要在檢測器(inspector)中將static核取方塊打勾即可,如下圖所示

dynamic batching 動態批處理

有陰就有陽,有靜就有動,所以聊完了靜態批處理,肯定跟著就要說說動態批處理了。首先要明確一點,unity3d的draw call動態批處理機制是引擎自動進行的,無需像靜態批處理那樣手動設定static。

2)通過把紋理打包成圖集來儘量減少材質的使用。

因為被「批處理」的2個物體的網格模型需要使用相同材質的目的,在於其紋理是相同的,這樣才可以實現同時渲染的目的。因而保證材質相同,是為了保證被渲染的紋理相同。因此,為了將2個紋理不同的材質合二為一,我們就需要進行上面列出的第二步,將紋理打           包 成圖集。具體到合二為一這種情況,就是將2個紋理合成乙個紋理。這樣我們就可以只用乙個材質來代替之前的2個材質了

3)盡量少的使用反光啦,陰影啦之類的,因為那會使物體多次渲染。

unity演算法面試 Unity面試經驗

工作經驗快滿三年了,從學校實習開始到目前為止只經歷過一次找工作的經驗。這次出來找工作還是有點感觸的。下面是我對上家公司工作的乙個反思和本次找工作的經歷的乙個簡短總結。1.在前一家公司的時候什麼活都幹,而且也基本上可以勝任。可以說在這家公司裡把知識面開拓的很寬,但是終究對於我來說沒有壓箱底的技術。因為...

Unity 常用方法整理

獲取子物體方法 gameobject child transform.find child gameobject 查詢當前物件的子物體 child gameobject child1 transform.getchild 0 gameobject 獲取當前物體下第乙個子物體 gameobject c...

unity演算法面試 unity 常見的面試題總結

一.介面和抽象類的區別 1.抽象類可以有構造方法,介面中不能有構造方法 2.抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能public static final型別,並且預設即為public static final型別 3.乙個類可以實現多個介面,但只能繼承乙個抽象類 4.抽象類...