试图理解输入顶点的OpenGL着色器

时间:2016-02-06 04:32:52

标签: c++ opengl

这是我的代码,这是顶点着色器

"#version 400\n"
      "layout(location =  0) in vec2 vp;"
      "layout(location = 1) in vec2 tex;"
      "out vec2 texCoord;"
      "void main () {"
      "  gl_Position = vec4 (vp, 0.0f, 1.0f);"
      "  texCoord = tex; "
      "}";

安静的普通和基本

所以基本上我想要理解的是,顶点着色器是否分别为每个顶点属性运行?或者它只能单独运行一个属性?

据我所知,如果我将它作为三角形的输入顶点

  x    y    U   V
{-0.5,-0.5, 0.0, 0.0
 0.5, -0.5 , 1.0, 0.0
 0.0  0.0 , 0.5, 1.0 };

这是否意味着顶点着色器将针对两个顶点属性运行并生成位于两个三角形(样本)区域内的每个单独片段,以生成每个属性的两个定义三角形的xy坐标?

或者顶点着色器是否仅为gl_Position运行以产生第一个属性中区域的xy坐标,即vp?

1 个答案:

答案 0 :(得分:1)

整个着色器程序每个顶点运行一次。所以在这种情况下,它会运行三次。它不适用于每个属性。