我正在寫C++中的一個類來處理繪製3D模型(即三角形網格),我想知道如何最好地組織我的數據緩衝區。OpenGL交錯索引數組
這是我目前所知:
使用交錯陣列加快代碼。它利用空間局部性並增加緩存命中。您可以通過組織頂點到
struct
s來實現這一點,其中每個struct
都包含position/normal/texcoord/etc。該頂點的信息。使用索引數組通過存儲每個不同的頂點/ normal/texcoord /等來減少內存消耗。只有一次,然後通過對這些數組的引用來定義面部,而不是冗餘地爲每個面部指定所有信息。你也可以也實現這與指數的
struct
成頂點屬性的列表。
我的問題:我應該如何最好地利用這兩種呢?可以做到兩者嗎?我聽說你們都應該儘可能地使用它們,但是沒有發現任何關於同時使用它們或者一個使用它們的問題。
我最初的解決方案:我打算實現一個結構,它在數據數組中包含索引,並將這些結構的數組以及數據陣列作爲VBO傳遞,實質上將兩者結合起來。
我在正確的軌道上嗎?有一個更好的方法嗎?我該做什麼/不該做什麼?有什麼我似乎不知道會影響這個決定?
三角形條+一些訂單優化如何http://rosario3d.wordpress.com/2011/06/19/triangle-render-order-optimization/? – JAre
[工具](http://users.telenet.be/tfautre/softdev/tristripper/vs_nvtristrip.htm) – JAre