title: OpenGL, VAOs and multiple buffers
body: <p>I am writing a little graphics engine using OpenGL ( via OpenTK with C# ).</p>
  
  <p>To define vertex attributes, I have a VertexDeclaration class with an array of VertexElement structures that are mapped to glEnableVertexAttribArray/glVertexAttribPointer calls.</p>
  
  <p>Also, to support multiple vertex streams, I have a special structure holding a vertex buffer, vertex declaration, vertex offset and instance frequency (like the XNA's VertexBufferBinding structure).</p>
  
  <p>Currently, whenever a drawing call is invoked, I iterate over all the set vertex streams and
  bind their vertex buffers, apply vertex declarations, disable unused vertex attributes and draw the primitives.</p>
  
  <p>I would like to use VAOs to cache the glEnableVertexAttribArray calls into them,
  and whenever a vertex stream is applied, bind the VAO and change its array buffer binding.</p>
  
  <p>Is that a correct usage of VAOs?</p>