由于顶点着色器每个顶点运行一次(这意味着在三角形中运行 3 次),如果仅分配了三次(如示例中所示),如何为每个片段计算变化变量?
片段着色器:
precision mediump float;
varying vec4 v_Color;
void main() {
gl_FragColor = v_Color;
}
顶点着色器:
attribute vec4 a_Position;
attribute vec4 a_Color;
varying vec4 v_Color;
void main() {
v_Color = a_Color;
gl_Position = a_Position;
}
所以,问题是,这背后的系统如何知道如何计算每个片段的变量 v_Color,因为该着色器仅分配 v_Color 3 次(在三角形中)。
最佳答案
顶点着色器的所有输出都是针对每个顶点的。当您在顶点着色器中设置v_Color
时,它会将其设置在当前顶点上。当片段着色器运行时,它会读取图元中每个顶点的 v_Color
值,并根据片段的位置在它们之间进行插值。
关于opengl - 即使变量只在顶点着色器上设置了三次,OpenGL 如何在片段着色器上插入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201847/