我熟悉顶点和片段着色器,但仍然对片段着色器如何确定顶点着色器输出中的片段数量感到困惑。
如果我有3个顶点并且我在GLSL中绘制一个三角形图元,那么顶点着色器将为每个顶点运行三次,然后片段着色器将运行多次(取决于片段的数量,每个片段一次)。 / p>
我想知道片段着色器如何确定片段?它是否使用gl_Position?如果我没有在我的顶点着色器中设置gl_Position,片段着色器是否仍然能够生成片段?
每次在顶点着色器中是否必须设置gl_Position?
答案 0 :(得分:10)
您正在谈论称为扫描转换的光栅化步骤。 GPU获取顶点着色器生成的位置并插入其属性以生成传递给片段着色器的片段。所以是的,你必须在顶点着色器中设置gl_Position。
在将三角形的坐标转换为窗口坐标之后,扫描转换采用三角形并根据三角形覆盖的输出图像上的窗口像素的排列将其分解。 Source.