To be able to specify an offset value that would be added to each index at the vertex lookup stage. This would allow a single vertex buffer to be used to render multiple objects using 16bit indices and without the need to respecify all vertex attributes using the gl***Pointer functions for each object, with all the expense that incurs.
Simple Example Of Mechanism (not intended as an example of need):-
Advantages and disadvantages have been discussed here:-Code :vec3f verts[]={ {0,0,0}, {1,0,0}, {1,1,0}, {0,1,0}, // obj1 verts {0,0,0}, {-1,0,0}, {-1,-1,0}, {0,-1,0} // obj2 verts }; GLushort obj1_Indices[]={0,1,2,3}; GLint obj1_ElementOffset = 0; GLushort obj2_Indices[]={0,1,2,3}; GLint obj2_ElementOffset = 4; glVertexPointer(3, GL_FLOAT, verts); glVertexOffset(obj1_ElementOffset); glDrawRangeElements(GL_QUADS, 0, 3, 4, GL_UNSIGNED_SHORT, obj1_Indices); glVertexOffset(obj2_ElementOffset); glDrawRangeElements(GL_QUADS, 0, 3, 4, GL_UNSIGNED_SHORT, obj2_Indices);
http://www.opengl.org/discussion_boa...c;f=3;t=012219



