title: What is the reasoning behind OpenGL texture units as opposed to regular buffers and uniforms?
body: <p>I am very new to the OpenGL API and just discovered textures and how to use them. The generated texture buffers are not bound in the same way as regular uniforms are bound and instead use <code>glActiveTexture</code>, followed by a bind rather than just supplying the texture to the shaders via <code>glUniform</code> as we do with other constants.</p>
  
  <p>What is the reasoning behind this convention?</p>
  
  <p>The only reason I can think of is to utilize the graphics card's full potential and texture processing capabilities instead of just binding buffers directly. Is this correct reasoning, or is it simply the way the API was implemented?</p>
  
  <p>No reasoning is given on the official wiki, just says that it's weird: "Binding textures for use in OpenGL is a little weird" <a href="https://www.khronos.org/opengl/wiki/Texture" rel="noreferrer">https://www.khronos.org/opengl/wiki/Texture</a></p>