См. Примитивы треугольника
У вас есть 4 координаты вершины, которые имеют следующее расположение:
static float squareCoords[] = {
-0.5f, 0.5f, 0.0f, // top left
-0.5f, -0.5f, 0.0f, // bottom left
0.5f, -0.5f, 0.0f, // bottom right
0.5f, 0.5f, 0.0f }; // top right
0 3
x x
| |
| |
x-----x
1 2
Этот шаблонсоответствует типу примитива GL_TRIANGLE_FAN
, но не типу примитива GL_TRIANGLES
.
Измените тип примитива, чтобы решить вашу проблему:
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, vertexCount);
Примечание для типа примитива GL_TRIANGLES
вам потребуется 6 координат вершин, например, при следующем расположении:
0 3 5
x x-----x
| \ \ |
| \ \ |
x-----x x
1 2 4
Тип примитива GL_TRIANGLES
соответствует вашему индексному буферу:
private short drawOrder[] = { 0, 1, 2, 0, 2, 3 };
Если вы хотите нарисовать примитивы из списка индексов, тогда вы должны использовать glDrawElements
:
GLES20.glDrawElements(GLES20.GL_TRIANGLES, 6, GLES20.GL_SHORT, drawListBuffer);