GL2ES2.glVertexAttribPointer() comes in two versions, one that takes a Buffer and one that takes a long. The long is interpreted as an offset in a bound VBO. In the latest OpenGL, glVertexAttribIPointer() is also supposed to be able to take an offset that's just an integer, but JOGL's GL interfaces do not expose a version of the method that does that. It appears that the same problem exists with glVertexAttribLPointer(), incidentally. In the thread http://forum.jogamp.org/Where-is-glVertexAttribIPointer-that-doesn-t-take-a-Buffer-td4026005.html , Sven Gothel comments: > but my > main question is something else: In the process of fiddling with this I > learned about glVertexAttribIPointer() which seemed like something I ought to > try, since I was passing ints and that function seems to be specialized for > ints or something. But the interfaces GL4 and GL3 seem to lack > glVertexAttribIPointer(int, int, int, int, long). I'm using a GL3, which > should have that method. What's the problem? I see, the code generation for this method doesn't match the GL3 spec, where (both) glVertexAttribIPointer(..)'s and glVertexAttribPointer(..)'s 'void *pointer' argument is an offset to a bound VBO (GL_ARRAY_BUFFER). GL2 spec (and the GL2/GL3 compatibility profile) define glVertexAttribPointer(..)'s 'void *pointer' argument either as a direct data source, _or_ as an offset if a VBO (GL_ARRAY_BUFFER) is bound.
fixed in jogl commit 3c09f42d372f89bdb41ab4cf2f96962971ad909a