title: How does OpenGL know to what position it should draw the vertices based on the GL_ARRAY_BUFFER?
body: <p>For example, I have the following piece of code:</p>
  
  <pre><code>//Create a vbo and bind it to the GL_ARRAY_BUFFER
  glGenBuffers(1, &amp;positionBufferObject);    
  glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
  
  //vertexPosition is an array of floats that stores the position of 3 vertices (x, y, z, w)
  glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);
  
  //Enable the vbo at index 0 of the vao (assuming I have stored it previously at index 0)
  glEnableVertexAttribArray(0);
  glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
  
  //Finally draw the triangle
  glDrawArrays(GL_TRIANGLES, 0, 3);
  </code></pre>
  
  <p>My question is, how does glDrawArrays() know that whatever is bound to the GL_ARRAY_BUFFER refers to information about position, and not about colors for example?</p>