2010-11-11 106 views
6

很多網站/文章都說'批量!批量!批量!'。有人能解釋關於着色器的「配料」代表什麼?3D圖形批處理

也就是說,不

  1. 改變紋理
  2. 改變任意着色器變量

意味着什麼不能 '批處理'?

(很抱歉,如果這是一個弱智的問題:d)

回答

8

來概括它是要儘量做到少API調用,你可以畫出你需要畫什麼最簡單的方法。使用頂點數組或VBO(在現代API中甚至不是可選的),紋理地圖集和避免狀態更改的所有因素都對此有所貢獻。真正令人驚歎的是,現代GPU可以在您轉向並設置下一個繪圖調用的時間內繪製多少個三角形。

+0

並將其應用於您的兩點,更改事物會否定批次。如果紋理同VRAM一樣,但更改着色器變量不斷變慢,則更改紋理通常不會太糟糕。 – ssube 2010-11-11 04:33:37

+0

謝謝。現代遊戲引擎在批量處理時如何處理轉換矩陣(哪個對象發生更改)? – jameszhao00 2010-11-11 08:02:54

+0

轉換矩陣將在需要時設置爲着色器常量。這不是一個大問題,因爲很多場景通常都是世界。它是靜態的,不需要轉換。如果確實如此:在加載時將數據加載到頂點緩衝區之前進行數據轉換。 – 2010-11-11 08:48:53

3