title: Best way to use multiple shaders
body: <p>Few weeks I learn OpenGL on famous <a href="http://learnopengl.com" rel="nofollow">http://learnopengl.com</a> and have question about a organise multiple materials (shaders).
  In this tutorial is using Shader class which compose Shader program from list of vert/frag shaders:</p>
  
  <pre><code>Shader shader("vert.glsl", "frag.glsl");
  </code></pre>
  
  <p>After that for shader I create uniforms: </p>
  
  <pre><code>    glUniformMatrix4fv(glGetUniformLocation(shader.Program, "model"), 1, GL_FALSE, glm::value_ptr(model));
      glUniformMatrix4fv(glGetUniformLocation(shader.Program, "view"), 1, GL_FALSE, glm::value_ptr(view));
  etc.
  </code></pre>
  
  <p>And at the end we receive one Shader program. How in this case I can make multiple shaders? 
  I try to make:</p>
  
  <pre><code>Shader shader("vertDiff.glsl", "fragDiff.glsl");
  Shader shaderGlass ("vertGlass.glsl", "fragGlass.glsl");
  Shader shaderLight("vertLight.glsl", "fragLight.glsl")
  </code></pre>
  
  <p>And after that i make uniforms for .glsl for each shader :</p>
  
  <pre><code>glUniformMatrix4fv(glGetUniformLocation(shader.Program, "model"), 1, GL_FALSE, glm::value_ptr(model));
  glUniformMatrix4fv(glGetUniformLocation(shaderGlass.Program, "model"), 1, GL_FALSE, glm::value_ptr(model));
  </code></pre>
  
  <p>But shading doesn't work correctly. The same uniforms needs to be declared few times for each shader and that make program incorrect.
  How is a correctly to make this part? Thank you and sorry for my stupid question.:)</p>