title: glGetAttribLocation returns -1 when retrieving existing shader attribute
body: <p>I'm trying to pass in attributes to my vertex shader but for some reason it keeps giving me a -1 on the 3rd attribute location I'm asking openGl to retrieve via glGetAttribLocation(). Currently it keeps giving me a -1 for the texCoord attribute and if I switch the texAttrib and colAttrib around (switching the lines in code) it gives me a -1 on the color property instead of the texture and I have no idea why? Since a -1 is being passed to glVertexAttribPointer I get the 1281 OpenGL error: GL_INVALID_VALUE.</p>
  
  <p>My vertex shader:</p>
  
  <pre><code>#version 150
  
  in vec3 position;
  in vec3 color;
  in vec2 texcoord;
  
  out vec3 Color;
  out vec2 Texcoord;
  
  void main()
  {
      Color = color;
      Texcoord = texcoord;
      gl_Position = vec4(position.x, position.y, position.z, 1.0);
  }
  </code></pre>
  
  <p>OpenGL code:</p>
  
  <pre><code>basicShader.Use();
  
  // Buffers and shaders
  glGenVertexArrays(1, &amp;vao);
  glBindVertexArray(vao);
  
  glGenBuffers(1, &amp;vbo);
  // Make it active vbo
  glBindBuffer(GL_ARRAY_BUFFER, vbo);
  
  // Build basic triangle
  float vertices[] = {
      // position         // color          // textures
      -0.5f,  0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Top-left
       0.5f,  0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // Top-right
       0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, // Bottom-right
      -0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f// Bottom-left
  };
  GLuint elements[] = {
      0, 1, 2,
      2, 3, 0
  };
  
  glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
  
  GLint posAttrib = glGetAttribLocation(basicShader.shaderProgram, "position");
  glEnableVertexAttribArray(posAttrib); // Enable attribute first before specifiying attributes
  glVertexAttribPointer(posAttrib, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), 0); // 6 float sizes is every new vertex
  
  GLint colAttrib = glGetAttribLocation(basicShader.shaderProgram, "color");
  glEnableVertexAttribArray(colAttrib);
  glVertexAttribPointer(colAttrib, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float))); // same for color + offset
  
  GLint texAttrib = glGetAttribLocation(basicShader.shaderProgram, "texcoord"); // Returns -1
  glEnableVertexAttribArray(texAttrib);
  glVertexAttribPointer(texAttrib, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float))); // 6 offset from beginning
  
  [..]
  </code></pre>