Я хотел бы отрисовать полноэкранную выровненную сетку, используя TRIANGLE_STRIP
s. Он состоит из 9 вершин и 8 треугольников и должен выглядеть примерно так:
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
, и я мог бы показать все прямоугольники, поэтому я думаю, что это не проблема с остальной частью установки.
Есть идеи, что я делаю не так?