title: Opengl error 1282 (invalid operation) when using texture()
body: <p>I have the following fragment shader:</p>
  
  <pre><code>#version 330 core
  
  layout (location = 0) out vec4 color;
  
  uniform vec4 colour;
  uniform vec2 light_pos;
  
  in DATA
  {
      vec4 position;
      vec2 texCoord;
      float tid;
      vec4 color;
  } fs_in;
  
  uniform sampler2D textures[32];
  
  void main()
  {
      float intensity = 1.0 / length(fs_in.position.xy - light_pos);
  
      vec4 texColor = fs_in.color;
      if (fs_in.tid &gt; 0.0)
      {
          int tid = int(fs_in.tid + 0.5);
          texColor = texture(textures[tid], fs_in.texCoord);
      }
  
      color = texColor * intensity;
  }
  </code></pre>
  
  <p>If I run my program, I get opengl error 1282, which is invalid operation. If I don't use the texture(), so I write texCoord = vec4(...) it works perfectly. I'm always passing in tid (texture ID) as 0 (no texture) so that part shouldn't even run. I've set the textures uniform to some placeholder, but as far as I know this shouldn't even matter. What could cause the invalid operation then?</p>