glDrawElements -- copies buffer contents?

(context:)
I’m using this:
gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL.GL_FLOAT, 0, positionBuffer.rewind());
then this:
gl.glDrawElements(GL.GL_TRIANGLES, count, depth, buffer.rewind());

and the (relevant part of the) render loop is roughly this:
(1) transform skinned vertices into positionBuffer
(2) gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
(3) gl.glVertexPointer(3, GL.GL_FLOAT, 0, positionBuffer.rewind());
(4) gl.glDrawElements(GL.GL_TRIANGLES, count, depth, buffer.rewind());
(5) repeat from (1) with next mesh

(more context:)
certain libraries that I am familiar w/ actually copy the contents of NIO buffers passed to them upon invocation (the Java networking libraries, for instance)

(question:)
does the same thing happen upon invocation of render calls when using jogl? would positionBuffer and buffer be copied into other buffers upon invocation of glDrawElements(…)? if so, is there an intermediate buffer for these contents? how is it allocated? (etc …) … where can I find details on this?

It uses the pointer, no copy to another buffer in JOGL or LWJGL.

With vertex-arrays, then driver might copy the data into it’s own buffers before pumping it to the GPU, but AFAIK that rarely happens (exotic strides, misaligned floats maybe…?).

Anyway, nothing in the OpenGL-wrappers, and you’ll basicly never ‘know’ / ‘take advanctage of’ what happens in the driver.