Do we have plural form "multibind" version of separation APIs?

The separation of attribute formats usually consists of the following three API calls:

If we have multiple buffer objects that contain storage for various user-defined vertex attributes, we need to call the above API triples multiple times. Multibinding is introduced in recent versions of OpenGL allowing us to use plural form of the the first API – glBindVertexBuffers – to bind a group of buffer objects all at once to a series of targets. I then expect that there should be similar plural forms for other two attribute separation APIs, like glVertexAttribFormats and glVertexAttribsBinding. But I could not find them. glVertexArrayAttribFormat and glVertexArrayAttribBinding seems not for this “multibinding” purpose. So,

  1. Is there any plural form “multibinding” API for glVertexAttribFormat & glVertexAttribBinding available in the current OpenGL version?
  2. I’m surprised if not, but why not? because ARB assumes that multibinding separation is always used for data of the same format?


The whole point of separating format from buffer bindings is that it means you don’t have to modify the vertex format frequently. You’re separating out the two states: frequently changing buffers from infrequently (ie: never) changing formats.

If you want to change formats, just switch to a different VAO. That’s basically how you should treat VAOs with this feature: as the holder for immutable vertex format data. That they also store buffer bindings should be thought off as an unfortunate accident, a quirk of the OpenGL API.