2014-04-24 46 views
0

我正在開發一個真實世界的應用程序,用於在屏幕上呈現純白色多邊形,並隨着時間的流逝更改它們的alpha值。我正在嘗試學習如何使用GLTriangleBatch來執行此操作(我很瞭解C++,但不太瞭解OpenGL),並且無法在線找到任何好的示例。到目前爲止,我已經找到了一些資源,導致我放在一起下面的代碼位,但我仍然困惑的一些部分:我該如何使用GLTriangleBatch

GLTriangleBatch myTriangles; 
myTriangles.BeginMesh(1000000); // Include how many vertices you have: 1??? 
myTriangles.AddTriangle(...); // Add a triangle: 2??? 

// Repeat for all triangles for this batch 
myTriangles.End(); // Done adding triangles 
myTriangles.Draw(); // Draw the triangles 

我已經打上我很困惑與部分???和下面的問題出現:

  • 問題1:這是否個頂點必須是準確的,或者是好的高估和/或低估?此外,這個頂點數是否代表「批量」頂點或每個三角形的單個頂點(例如,2個共享頂點的連接三角形是否需要6個頂點或4個頂點?)

  • 問題2:參數爲:

    • M3DVector3f綠黨[3]:我想三角形
    • M3DVector3f vNorms的3個頂點:這是什麼,以及如何設置?
    • M3DVector2f vTexCoords [3]:我認爲這與紋理有關,我想要的只是一個白色三角形,並且能夠改變它的alpha值。我將如何設置?

回答

3

GLTriangleBatch類顯然是具備了OpenGL超級寶典書框架的一部分。它不是OpenGL標準的一部分(OpenGL是一個普通的C API)。

至於第一個問題,我假設nMaxVerts參數BeginMesh()是要繪製的頂點的上限(每個三角形= 3個vert)。因此,您可以將其設置爲精確值或高估。但是你必須找到一些文件,或者看看source來確定。

對於第二個問題,是verts[3]是構成三角形的三個位置。 vNorms是三角形的Face Normal。它用於照明計算。最後一位成員vTexCoords[3]是三角形的Texture Coordinates。這些用於紋理映射。如果不將紋理應用到網格,可以將它們設置爲零。