我想使用TRIANGLE_STRIP
來呈現全屏對齊的網格。它由9個頂點和8個三角形,而應該是這個樣子:在OpenGL ES 2.0中使用三角形條帶時遇到的問題
A----B----C
| 1 /| 3 /|
|/|/|
|/|/|
|/ 2 |/ 4 |
D----E----F
| 5 /| 7 /|
|/|/|
|/|/|
|/ 6 |/ 8 |
G----H----I
頂點A
的座標爲(-1,-1,0),而頂點I
是(1,1,0)。有人可能會說,這包括9個頂點,分別位於3列和3行。
我正在嘗試使用TRIANGLE_STRIP
模式來執行此操作。是
,我提供給glDrawElements
的指標如下:
AD BE CF F
DG EH FI I
的CFF
實際上應該產生退化的三角形,這樣人們可以跳到下一行。
我遇到的麻煩是計算提供給glDrawElements
的正確數字。我正在做這樣的:
glDrawElements(GL_TRIANGLE_STRIPS, number_of_elelments,
GLES20.GL_UNSIGNED_SHORT, buffer);
首先,我雖然它應該是可見的三角形數量:
number_of_elements = 2 * (cols - 1) * (rows - 1); // 8
,但它是渲染一半的矩形。
然後我想起退化矩形,並決定將他們也:
number_of_elements = 2 * (cols - 1) * (rows - 1) + rows; // 10
它變得更加矩形,但仍然不是全部。
然後我通過反覆試驗來猜測number_of_elements
應該是什麼,我可以看到所有的矩形,所以我認爲這與其餘的設置沒有問題。
任何想法我做錯了什麼?
看來我應該提供了*頂點*的數量,而不是*三角形*。有人確認這一點?在OpenGL規範中,他們說*元素的數量*,並且由於元素是三角形,所以我認爲它是三角形的,但看起來我錯了。 –