Я пытаюсь создать простую тестовую программу для Android (API 10), используя OpenGL ES 2.0, чтобы нарисовать простой прямоугольник. Я могу заставить это работать с плавающими буферами, ссылающимися на вершины напрямую, но я бы предпочел сделать это с VBO / IBO. Я искал бесчисленные часы, пытаясь найти простое объяснение (учебное пособие), но еще не нашел его. Мой код компилируется и работает просто отлично, но на экране ничего не отображается, кроме чистого цвета.
Вот несколько фрагментов кода, которые помогут объяснить, как я настроил его прямо сейчас.
Часть onSurfaceChanged ():
int[] buffers = new int[2];
GLES20.glGenBuffers(2, buffers, 0);
rectVerts = buffers[0];
rectInds = buffers[1];
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, rectVerts);
GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, (rectBuffer.limit()*4), rectBuffer, GLES20.GL_STATIC_DRAW);
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, rectInds);
GLES20.glBufferData(GLES20.GL_ELEMENT_ARRAY_BUFFER, (rectIndices.limit()*4), rectIndices, GLES20.GL_STATIC_DRAW);
Часть onDrawFrame ():
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, rectVerts);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(0, 3, GLES20.GL_FLOAT, false, 0, 0);
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, rectInds);
GLES20.glDrawElements(GLES20.GL_TRIANGLES, 6, GLES20.GL_INT, 0);