2011-12-17 39 views

回答

9

爲3D對象定義幾何圖形時,有兩個基本元素正在使用:頂點和三角形。頂點只是由XYZ座標定義的空間位置(通常是一些附加信息,如紋理座標),三角形只是三個頂點。

定義頂點非常簡單。你通常只是提供一個位置列表,如下所示:

[ 
    1.0, 2.0, 3.0, // vertex 0 
    4.0, 5.0, 6.0, // vertex 1 
    7.0, 8.0, 9.0, // vertex 2 
    // etc.. 
] 

所以現在的問題是我們該如何製作三角形呢?最直接的方式就是說每個三個頂點集合都隱含一個三角形(所以上面的數組將定義一個三角形)。這很容易,因爲它不需要任何附加信息,只需提供三個頂點,剩下的就是硬件。這被稱爲非索引幾何,這是金字塔在您鏈接的教程中使用的方法。

問題是,在大多數模型中,幾個三角形都將共享相同的頂點。想想立方體的角落:至少有三個三角形都需要使用同一個點。使用非索引幾何時,您需要將陣列中該頂點的信息複製三次。這不是非常有效,對於大型複雜網格,最終會產生大量冗餘數據。我們可以通過使用索引幾何來解決這個問題。

帶索引的幾何圖形只需定義一次網格中的每個頂點,然後提供第二個整數索引,它將索引到您的頂點數組中,並基本上「連接點」以告訴您的圖形卡組成三角形的哪些點。

[ 
    0, 1, 2, // Triangle 0, uses vertices 0, 1, and 2 
    3, 2, 1, // Triangle 2, uses vertices 3, 2, and 1 
    // etc... 
] 

這樣做效率更高,節省內存,並且通常渲染速度也更快。這是多維數據集在教程中使用的方法。

這兩種方法都可以正常工作,並且兩種方法都有更好的選擇,但通常您會看到大多數專業應用程序使用索引幾何,因爲內存使用率較低。

這是否清除了所有東西?

+0

謝謝兄弟,我明白了。 – 2011-12-17 22:46:06

+0

我認爲這是有用的補充說,如果一個頂點在幾個三角形之間共享,並且如果每個邊沒有應用相同的紋理,點必須與其他紋理座標重複。這在一定程度上降低了索引的興趣,但仍然可以節省相當多的內存。 – GameAlchemist 2014-03-14 11:53:39

相關問題