title: Concept behind OpenGL's 'Bind' functions
body: <p>I am learning OpenGL from <a href="https://alfonse.bitbucket.io/oldtut/Basics/Intro%20Graphics%20and%20Rendering.html" rel="noreferrer">this tutorial</a>.
  My question is about the specification in general, not about a specific function or topic.
  When seeing code like the following:</p>
  
  <pre><code>glGenBuffers(1, &amp;positionBufferObject);
  glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
  glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);
  glBindBuffer(GL_ARRAY_BUFFER, 0);
  </code></pre>
  
  <p>I'm confused about the utility of calling the bind functions before and after setting the buffer data.
  It seems superfluous to me, due to my inexperience with OpenGL and Computer Graphics in general.</p>
  
  <p>The man page says that:</p>
  
  <blockquote>
    <p>glBindBuffer lets you create or use a named buffer object. Calling glBindBuffer with target set to
           GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER or GL_PIXEL_UNPACK_BUFFER and buffer set to the
           name of the new buffer object binds the buffer object name to the target. When a buffer object is bound to a
           target, the previous binding for that target is automatically broken.</p>
  </blockquote>
  
  <p>What exactly is the concept/utility of 'binding' something to a 'target' ? </p>