Bug 612

Summary: glVertexAttribIPointer(int, int, int, int, long) is missing
Product: [JogAmp] Jogl Reporter: giocondo.fulbright
Component: openglAssignee: Sven Gothel <sgothel>
Status: RESOLVED FIXED    
Severity: normal    
Priority: ---    
Version: 2   
Hardware: All   
OS: all   
Type: --- SCM Refs:
jogl 3c09f42d372f89bdb41ab4cf2f96962971ad909a
Workaround: ---

Description giocondo.fulbright 2012-09-03 02:58:14 CEST
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.
Comment 1 Sven Gothel 2012-09-20 11:58:12 CEST
fixed in jogl commit 3c09f42d372f89bdb41ab4cf2f96962971ad909a