Я смог заставить VBO работать на одну сетку.Сначала я установил opengl:
//....
GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
Для каждого меша я генерирую буфер (два вызова этой функции на сетку):
vertBuffer = GL15.glGenBuffers( BufferUtils.createIntBuffer(1));
//same idea for faceBuffer
Я помещаю данные меша в FloatBuffers и IntBuffers,Затем я должен отправить их в opengl:
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertBuffer)
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, myVertPositions,GL15.GL_STATIC_DRAW);
//same idea for faces.
Примечание. Все вышеперечисленные шаги выполняются только один раз.
Наконец, выполняется рендеринг:
//...
int stride = 0; //0 = compact arrays.
int offset = 0; //Each mesh would need a different offset?
GL11.glVertexPointer(3, GL11.GL_FLOAT, stride, offset);
GL12.glDrawRangeElements(GL11.GL_TRIANGLES, 0, numVerts,
numFaces*3, GL11.GL_UNSIGNED_INT, offset);
//Using the "buffer versions" of these functions throws
//"Cannot use Buffers when Array Buffer Object is enabled"
//Whether or not glEnableClientState is called.
Любая новая сетка, которую я добавляю, перезаписывает старую сетку.Поместить ВСЕ мои сетки в один и тот же буфер не очень эффективно.Как еще можно заставить несколько сеток сосуществовать?