2011-04-18 47 views
3

我已經加載了波前模型文件(.OBJ和.MTL),並將頂點/索引存儲在VBO中進行渲染。現在我只在模型加載時填充VBO。我的問題是......重複使用頂點數據重繪模型的多個實例的最佳方法是什麼?目前,我只是爲模型的每個實例存儲一個變換矩陣(旋轉,縮放和平移),並使用相關變換矩陣爲每個實例調用draw()函數。如何加載模型並在OpenGL中重複使用

這是完全不正確的方法嗎?有什麼更好/替代方法可以達到同樣的結果?

顯然,這隻適用於物體相對於其本身是靜止的非常基本的模型(即,不管模型的任何部分如何移動,無論它是否是世界方向)。這使我相信確實有更好的方法來做到這一點。

希望我的隨筆意義......

回答

4

如果你只是想改變模型的位置,改變變換矩陣是一種合理的方式做到這一點。在後來的OpenGL版本中,您可以使用實例化繪圖在單次調用中使用不同轉換多次渲染模型,並且可能以這種方式獲得一些額外的性能,但是每次都會改變轉換矩陣的循環是一個很好的開始點。

如果您實際上爲模型設置了動畫效果,那就不同了,因爲頂點座標本身必須改變。對於基於關鍵幀的動畫,您可以將每個關鍵幀加載到單獨的緩衝區中,並使頂點着色器使用您提供的統一時間值進行插值。但是這種事情是獨立的,只是改變整個模型。

+0

感謝您的回答和澄清。我不需要做一段時間的動畫,所以我想我會留下它,直到我需要它:p – 2011-04-18 15:00:28