GL_TRIANGLE_STRIP繪製三角形方式很多時候令人疑惑,在這裏對其運作機理進行解釋。
一般情況下有三種繪製一系列三角形的方式,分別是GL_TRIANGLES、GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN。
如下圖所示:
GL_TRIANGLES是以每三個頂點繪製一個三角形。第一個三角形使用頂點v0,v1,v2,第二個使用v3,v4,v5,以此類推。如果頂點的個數n不是3的倍數,那麼最後的1個或者2個頂點會被忽略。
GL_TRIANGLE_STRIP則稍微有點複雜。
其規律是:
構建當前三角形的頂點的連接順序依賴於要和前面已經出現過的2個頂點組成三角形的當前頂點的序號的奇偶性(如果從0開始):
如果當前頂點是奇數:
組成三角形的頂點排列順序:T = [n-1 n-2 n].
如果當前頂點是偶數:
組成三角形的頂點排列順序:T = [n-2 n-21 n].
以上圖爲例,第一個三角形,頂點v2序號是2,是偶數,則頂點排列順序是v0,v1,v2。第二個三角形,頂點v3序號是3,是奇數,則頂點排列順序是v2,v1,v3,第三個三角形,頂點v4序號是4,是偶數,則頂點排列順序是v2,v3,v4,以此類推。
這個順序是爲了保證所有的三角形都是按照相同的方向繪製的,使這個三角形串能夠正確形成表面的一部分。對於某些操作,維持方向是很重要的,比如剔除。
注意:頂點個數n至少要大於3,否則不能繪製任何三角形。
GL_TRIANGLE_FAN:繪製一組相連的三角形。三角形是由第一個頂點及其後給定的頂點所確定。頂點1,n+1和n+2定義了第n個三角形,總共繪製N-2個三角形。 各三角形形成一個扇形序列。
原文轉載自:http://blog.csdn.net/xiajun07061225/article/details/7455283