to create a vbo I use this function:
public void loadVBO(){
vboID = GL15.glGenBuffers();
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboID);
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buf, GL15.GL_STATIC_DRAW);
// Put the position coordinates in attribute list 0
GL20.glVertexAttribPointer(0, 4, GL11.GL_FLOAT,
false,4*4+4*4+4*4+2*4 , 0);
// Put the color components in attribute list 1
GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT,
false,4*4+4*4+4*4+2*4 , 4*4);
GL20.glVertexAttribPointer(2, 4, GL11.GL_FLOAT,
false,4*4+4*4+4*4+2*4 , 4*4+4*4);
// Put the texture coordinates in attribute list 2
GL20.glVertexAttribPointer(3, 4, GL11.GL_FLOAT,
false,4*4+4*4+4*4+2*4 , 4*4+4*4+4*4);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
}
to display a vbo I use this function:
public void displayVBO(){
GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboID);
GL20.glEnableVertexAttribArray(0);
GL20.glEnableVertexAttribArray(1);
GL20.glEnableVertexAttribArray(2);
GL20.glEnableVertexAttribArray(3);
GL11.glDrawArrays(GL_TRIANGLES, 0, buf.capacity());
GL20.glDisableVertexAttribArray(0);
GL20.glDisableVertexAttribArray(1);
GL20.glDisableVertexAttribArray(2);
GL20.glDisableVertexAttribArray(3);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
}
So when I call map.loadVBO() and then ocean.loadVBO(), I think the second call overwrite the first vbo I don't know how ...
When I call map.display() and ocean.display(), I have the ocean draw 2 times ....
Thanks.