我建了一個2D圖形引擎,我創建了一個批處理系統,所以,如果我有1000個精靈具有相同的紋理,我可以用一個單一的通話吸引他們OpenGL的。呈現在OpenGL多個模型與一個單一的繪製調用
這是通過把在一個單一的VBO頂點數組的所有子畫面的所有頂點具有相同的織構來實現。
而不是「打印這些頂點,打印這些頂點,打印這些頂點」我願意「把所有的頂點toghether,打印」,只是要非常清楚。 足夠簡單,但現在我試圖在3D中實現同樣的功能,而且我遇到了一個很大的問題。
問題是我正在使用模型視圖投影矩陣來放置和渲染我的模型,這是在3D空間中渲染模型的常用方法。
有關屏幕的每個模型,我需要的MVP矩陣傳遞給着色器,這樣我可以用它來每個頂點變換到正確的位置。
如果我想在着色器之外進行轉換,它將由cpu執行,我不是一個好主意,原因很明顯。
但問題在於那裏。我需要將矩陣傳遞給着色器,但是對於每個模型矩陣都是不同的。
所以我不能做我的2D精靈做同樣的,因爲改變着色均勻,需要一場平局每次。
我希望我已經清楚,也許你有一個好主意,我沒有或者你已經有同樣的問題。我知道有一個事實,那就是某個地方有解決方案的原因,因爲在像Unity這樣的引擎中,可以爲多個模型使用相同的着色器,並且只需一次繪製調用便可脫身
太棒了!我努力實現類似自己的事情,但我真的不知道如何,這正是我所尋找的 – Ryno