OpenGL extension ARB.vertex_attrib_binding
This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_attrib_binding to provide a more Python-friendly API
Overview (from the spec)
OpenGL currently supports (at least) 16 vertex attributes and 16 vertex buffer bindings, with a fixed mapping between vertex attributes and vertex buffer bindings. This extension allows the application to change the mapping between attributes and bindings, which can make it more efficient to update vertex buffer bindings for interleaved vertex formats where many attributes share the same buffer.
This extension also separates the vertex binding update from the vertex attribute format update, which saves applications the effort of redundantly specifying the same format state over and over.
Conceptually, this extension splits the state for generic vertex attribute arrays into:
  • An array of vertex buffer binding points, each of which specifies:
  • a bound buffer object,
  • a starting offset for the vertex attribute data in that buffer object,
  • a stride used by all attributes using that binding point, and
  • a frequency divisor used by all attributes using that binding point.
  • An array of generic vertex attribute format information records, each of which specifies:
  • a reference to one of the new buffer binding points above,
  • a component count and format, and a normalization flag for the attribute data, and
  • the offset of the attribute data relative to the base offset of each vertex found at the associated binding point.
The official definition of this extension is available here:


glBindVertexBuffer( bindingindex , buffer , offset , stride )
glVertexAttribBinding( attribindex , bindingindex )
glVertexAttribFormat( attribindex , size , type , normalized , relativeoffset )
glVertexAttribIFormat( attribindex , size , type , relativeoffset )
glVertexAttribLFormat( attribindex , size , type , relativeoffset )
glVertexBindingDivisor( bindingindex , divisor )