Hi all,
I have a problem using a VBO in combination with a triangle strip. The program crashes when I use a larger geometry (128x128 points) and with a smaller geometry (32x32) the program runs but I see a lot of extra triangles.
The programs executes perfectly when I disable VBO’s (see code in green bold).
I think the problem is in the way I define the ELEMENT_ARRAY_BUFFER, but nothing seems to help.
Using a vbo for the geometry and the non vbo version for the glDrawElements results in a guaranteed crash 
Any help is appreciated ???
public void draw(ViewPoint vp, GL gl, GLU glu, DrawingMode mode) {
final boolean VBOSupported = gl.isFunctionAvailable(“glGenBuffersARB”) &&
gl.isFunctionAvailable(“glBindBufferARB”) &&
gl.isFunctionAvailable(“glBufferDataARB”) &&
gl.isFunctionAvailable(“glDeleteBuffersARB”);
TerrainTriangleStrip strip =refinement.refineTerrain(vp);
if (VBOSupported){
if ( !vboCreated){
terrainData.rewind();
int[] id = new int[2];
gl.glGenBuffersARB(2,id,0);
vboID = id[0];
indicesID = id[1];
gl.glBindBufferARB(GL.GL_ARRAY_BUFFER_ARB,vboID);
System.out.println(glu.gluErrorString(gl.glGetError()));
gl.glBufferDataARB(GL.GL_ARRAY_BUFFER_ARB,
terrainData.limit(),terrainData,GL.GL_STATIC_DRAW_ARB);
System.out.println(glu.gluErrorString(gl.glGetError()));
vboCreated = true;
System.out.println("VBO created");
}
gl.glBindBufferARB(GL.GL_ARRAY_BUFFER_ARB,vboID);
gl.glInterleavedArrays(GL.GL_N3F_V3F,0,0);
[b]gl.glBindBufferARB(GL.GL_ELEMENT_ARRAY_BUFFER_ARB,indicesID);
gl.glBufferDataARB(GL.GL_ELEMENT_ARRAY_BUFFER_ARB,
strip.getSize()*Integer.SIZE,strip.getStrip(),GL.GL_STATIC_DRAW_ARB);
gl.glDrawElements(GL.GL_TRIANGLE_STRIP,strip.getSize(),GL.GL_UNSIGNED_INT,0);[/b]
}
[b]if ( ! VBOSupported){
strip.getStrip().rewind();
terrainData.rewind();
gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE);
gl.glInterleavedArrays(GL.GL_N3F_V3F,0,terrainData);
gl.glDrawElements(GL.GL_TRIANGLE_STRIP,strip.getSize(),GL.GL_UNSIGNED_INT,strip.getStrip());
}[/b]
}