Hi.
My first Jogl testes by manually drawing polygons (via glBegin, glVertex3f and so on) work fine.
However using the faster glVertexPointer() and then glDrawElements() doesn’t do anything, except to throw exceptions to me after a while.
From my former Gl4java tests I got the vertex array and the connection array. However moving this code to Jogl fails for me so far.
What am I doing wrong? Any hints appreciated.
Here’s the relevant part:
// SIZE_FLOAT = 4
// SIZE_SHORT = 2
/** In some initialisation method */
// float mypoints[] : holds each vertex (x, y, z)
ByteBuffer bbuffer = ByteBuffer.allocateDirect(mypoints.length * SIZE_FLOAT);
for (short i = 0; i < mypoints.length; i++) {
bbuffer.putFloat(mypoints[i]);
}
bbuffer.rewind();
bufPoints = bbuffer.asFloatBuffer();
// short conns[] : holds (0, 1, 2), (1, 2, 3) and so on.
ByteBuffer bbuffer = ByteBuffer.allocateDirect(conns.length * SIZE_SHORT);
for (short i = 0; i < conns.length; i++) {
bbuffer.putShort(conns[i]);
}
bbuffer.rewind();
bufConns = bbuffer.asShortBuffer();
// and so on for colours, etc. The Buffers should be OK.
/** Now in the diplay() method */
gl.glEnableClientState(gl.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, gl.GL_FLOAT, 0, bufPoints);
// similar to colours, etc.
gl.glDrawElements(gl.GL_TRIANGLES, bufConns.limit(), gl.GL_SHORT, bufConns);
Do I have to use “gl.GL_UNSIGNED_SHORT” or “gl.GL_SHORT” in the DrawElements-call? None of them work for me.
By the way: do I really have to specify the Float_Size (4 Bytes on many machines) and Short_Size (2 bytes on many machines) ? However: if my Java application is to run on a platform where I don’t know its Float_Size?
Greetings and thank you.
-ric