title: Vertex shaders in and out?
body: <p>I've got two shaders like this: </p>
  
  <pre><code>const char* vertexShaderData =
  "#version 450 \n" 
  "in vec3 vp;"
  "in vec3 color;\n"
  "out vec3 Color;\n"
  "void main(){"
  "Color=color;"
  "gl_Position = vec4(vp, 1.0);" 
  "}";
  
  const char* fragShaderData =
  "#version 410\n"
  "uniform vec4 incolor;\n"
  "in vec3 Color;"
  "out vec4 outColor;"
  "void main(){"
  "outColor = vec4(Color, 1.0);"
  "}";
  </code></pre>
  
  <p>I understand that each shader is called for each vertex. </p>
  
  <ol>
  <li>Where do the <code>in</code> paremters in my <code>vertexShaderData</code> get their values? In no point in the code do I specify what vp is or what color is. In the second shader, I get that the <code>in</code>value comes from the first shader's <code>out</code> value. But where do thoes inital <code>in</code>s come from?</li>
  <li>About the <code>out</code> value of the <code>fragShaderData</code>: How is this value used? In other words, how does OpenGL know that this is an RGB color value and know to paint the triangle with this color?</li>
  </ol>