title: How does glDrawArrays know what to draw?
body: <p>I am following some begginer OpenGL tutorials, and am a bit confused about this snippet of code:</p>
  
  <pre><code>glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject); //Bind GL_ARRAY_BUFFER to our handle
  glEnableVertexAttribArray(0); //?
  glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0); //Information about the array, 3 points for each vertex, using the float type, don't normalize, no stepping, and an offset of 0. I don't know what the first parameter does however, and how does this function know which array to deal with (does it always assume we're talking about GL_ARRAY_BUFFER?
  
  glDrawArrays(GL_POINTS, 0, 1); //Draw the vertices, once again how does this know which vertices to draw? (Does it always use the ones in GL_ARRAY_BUFFER)
  
  glDisableVertexAttribArray(0); //?
  glBindBuffer(GL_ARRAY_BUFFER, 0); //Unbind
  </code></pre>
  
  <p>I don't understand how <code>glDrawArrays</code> knows which vertices to draw, and what all the stuff to do with <code>glEnableVertexAttribArray</code> is. Could someone shed some light on the situation?</p>