title: Changing the texture displayed in fragment shader
body: <p>I am trying to pass 2 textures to a shader and I am a little confused about the working here
  This is the opengl code</p>
  
  <pre><code>    GLuint textures;
      GLuint textures1;&lt;/code&gt;
      glGenTextures(1,&amp;textures);
      glGenTextures(1,&amp;textures1);
      glBindTexture(GL_TEXTURE_2D,textures);
      glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,texImg);
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
  
      glBindTexture(GL_TEXTURE_2D,textures1);
      glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,256,256,0,GL_RGB,GL_UNSIGNED_BYTE,texImg1);
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
      glBindTexture(GL_TEXTURE_2D,textures1);
  
      GLuint location1=glGetUniformLocation(programObjectFloor,"Tex1");
      GLuint location2=glGetUniformLocation(programObjectFloor,"Tex2");
  
      glActiveTexture(GL_TEXTURE1);
      glBindTexture(GL_TEXTURE_2D,textures1);
      glUniform1i(location2, 1);
  
      glActiveTexture(GL_TEXTURE0);
      glEnable(GL_TEXTURE_2D);
      glBindTexture(GL_TEXTURE_2D,textures);
      glUniform1i(location1, 0);
  </code></pre>
  
  <p>The Vertex Shader is </p>
  
  <pre><code>attribute vec4 position; 
  attribute vec4 texture;
  
  uniform mat4 MVP;
  
  
  varying vec4 ptexture; 
  
  void main()
  {
      ptexture = texture;     
      gl_Position = MVP * position; 
  }
  </code></pre>
  
  <p>The Fragment Shader is </p>
  
  <pre><code>varying vec4 ptexture; 
  
  uniform sampler2D Tex1;
  uniform sampler2D Tex2;
  uniform bool swit;
  
  void main() 
  {
          gl_FragColor = texture2D(Tex1,ptexture.st);
  } 
  </code></pre>
  
  <p>When I change the line </p>
  
  <pre><code>gl_FragColor = texture2D(Tex2,ptexture.st);
  </code></pre>
  
  <p>Still only the first texture is shown, but when I comment out the below lines, the second texture is shown, can you please explain why this is happening?</p>
  
  <pre><code>//        glActiveTexture(GL_TEXTURE0);
  //        glEnable(GL_TEXTURE_2D);
  //        glBindTexture(GL_TEXTURE_2D,textures);
  //        glUniform1i(location1, 0);
  </code></pre>