無索引頂點陣列是將頂點的位置依一定的順序存入陣列中,而在取出計算時也依一定的順序取出,而無需使用額外的索引陣列,也可以達到減少重覆頂點以節省記憶體的功能,這邊介紹兩種無索引頂點陣列,分為無共用邊與頂點的陣列、有共用邊與頂點的陣列。
無共用邊與頂點的陣列
無共用邊與頂點的陣列,在將頂點依序存入陣列後,還必須額外給定每一個邊或頂點所使用的頂點數,之後就可以依陣列中的頂點順序與給定的頂點數,依序取 出正確的頂點來使用,例如若頂點表示線段,則頂點使用數為2,依頂點存入的順序可以繪出以下的圖形:如果頂點表示三角形,則每個三角形的頂點使用數為3,依頂點存入的順序可以繪出以下的圖形:
也可以同時表現出不同形狀的圖形,例如若指定頂點使用數為3與4,則可以畫出以下的圖形:
有共用邊與頂點的陣列
有共用邊與頂點的陣列則完全依存入陣列的順序來繪製頂點,下一個繪製的圖形至少共用上一個圖形一個以上的頂點或邊,例如若指定繪製線段,依頂點存入的順 序,可以繪製出以下的圖形:上圖中下一線段共用上一線段的一個頂點;若要繪製連續的三角形,依頂點存入的順序,可以繪製出以下的圖形:
上圖中下一個三角形共用上一個三角形的兩個頂點,也就是共用一個邊;我們也可以其它圖形的繪製,例如進行扇形的繪製,依頂點存入的順序,可以繪製出以下的圖形:
上圖中扇形的三角形共用同一個頂點Vo,並共用相鄰三角形的邊。
如何以無索引頂點陣列來表現一個真正的圖形?如果以正四面體為例,我們先為四面體每一個面編號,這樣比較好說明,如下圖所示:
正四面體中,可以使用共用頂點與邊的無索引頂點陣列來記錄頂點,如下所示,為了接合出四面體,注意Vo與V4的座標會是相同的,而V1與V5的座標也相同:
至於該採取哪一種頂點資料結構,必須視您的圖形而定,在一些3D函式庫中,以上幾個基本的頂點陣列物件都是有提供的,您只要選擇使用哪一個就可以了。
在某些時候,頂點的順序可能也會用來表示一個面的法向量,通常使用右手的逆時針來判斷,在使用3D函式庫時必須注意。