I was recently switching from a 2.5 release to the newest 2.6 release and realized that one of the functions I use have gone or have been replaced by a function with an incompatible signature.
ARBDrawElementsBaseVertex.glDrawElementsBaseVertex(int, int, int, long, int) was present in 2.5 but is now gone.
In 2.6, NIO Buffers should be used for the "indices" parameter, but that is not what one wants when using that function with a VBO, where (as stated by the spec) the "indices" parameter is treated as an byte-offset into the VBO.
I would really like that function with the signature "void DrawElementsBaseVertex(enum mode, sizei count, enum type, void *indices, int basevertex)" (from the spec), where "void *indices" is a long, to reappear in the ARBDrawElementsBaseVertex extension.
I do realize that this function with this exact signature is present in the GL32 class, but as of now, I was able to have one class for all OpenGL functions only using the extensions versions of these functions and another class that uses the core versions of that functions (falling back to the extensions version if the required OpenGL version was not met). But it seems, that for this particular function, there is no extension entry point but the method in ARBDrawElementsBaseVertex directly delegates to the one in GL32.
Why does glDrawElementsBaseVertex have no glDrawElementsBaseVertexARB-like entry point? Can you assume that a driver exporting the ARB_draw_elements_base_vertex extension automatically would export that GL32 function?