2010-08-28 61 views
4

我有一個三角形的矢量數組,基本上包括一堆需要標記的正方形。一些看起來像用GLSL廣告牌頂點數組?

GLfloat vertexpositions[60 * 3]; 
// [x,y,z] * 6 for each square, and there are 10 squares 

而在此之後,調用glDrawArray使用適當的參數繪製共有10個格。

是否有可能編寫一個着色器程序,它可以單獨顯示同一頂點數組上存在的所有這些多邊形?

回答

1

您可以使用幾何着色器執行基元處理。

1

有兩種方法。使用點精靈,或者在連接變換後「撤消」旋轉。廣告牌需要翻譯,但不能輪換。

如果你傳遞一個最終的世界矩陣M到頂點着色器作爲一個統一的,那麼:

M[0][0] = M[1][1] = M[2][2] = 1.0 

將撤消旋轉,假設沒有剪切完成。 或者您可以簡單地從M [0 - 3] [3]中提取它的平移向量。

0

至少,您需要存儲每個廣告牌的中心位置。然後,您可以使用幾何着色器來生成頂點。或者,也可以將頂點相對於每個中心位置進行存儲並轉換頂點着色器中的頂點。