I am confused with the point in generating/creating a Vertex Array Object (VAO) with:
glGenVertexArrays(GLsizei n, GLuint *arrays);
and
glBindVertexArray(GLuint);
Because I can still create a buffer object, say for vertices, and describe that buffer object with glVertexAttribPointer and glEnableVertexAttribArraywithout ever creating a VAO.
My question is if you do not have to actually create the VAO to describe the data in a buffer object, why would such sources as the OpenGL SuperBible 5ed include a call to create a VAO when creating VBOs? Are they only used for more advanced topics I have yet to discover, am I totally confused?
Also I first encountered this question when reading wikipedias entry on VBOs and their sample code includes no calls to glGenVertexArrays() but they still describe the data with glVertexAttribPointer().Wiki VBO entry --
Example where VAOs are created for what reason?
 
     
     
     
     
    