Пожалуйста, исправьте меня, если я ошибаюсь, я начал с VBO всего 15 минут назад.
В любом случае, похоже, что вы должны использовать VBO "в два".Сначала вы связываете свои данные / массив, и сразу после этого сообщаете контексту GL, что вы только что дали.Мне потребовалось некоторое время, чтобы прочитать этот исходный файл , чтобы выяснить, что происходит, и искренне надеяться, что я не понял его полностью.Выдержка из этого файла;
if (useTexture) {
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, mTextureCoordBufferIndex);
gl11.glTexCoordPointer(2, mCoordinateType, 0, 0);
}
if (useColor) {
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, mColorBufferIndex);
gl11.glColorPointer(4, mCoordinateType, 0, 0);
}
В вашем коде вы связываете 3 раза и сразу после запуска переключаете то, что было привязано.Я не знаю, что именно там происходит, но я бы попробовал, например,
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, vertexPointerTri);
gl11.glVertexPointer(3, GL10.GL_FLOAT, 0, 0);
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, colorPointerTri);
gl11.glColorPointer(4, GL10.GL_FLOAT, 0, 0);
gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, indexPointerTri);
gl11.glDrawElements(GL10.GL_TRIANGLES, 3, GL10.GL_UNSIGNED_SHORT, 0);
Кроме того, из того, что я видел, это не должно приносить вреда, если вы отсоединяете массивы после рендеринга.Может быть, это в вашем коде не скопировано / вставлено здесь, но на всякий случай.
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, 0);
gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, 0);