Vil*_*lda 8 opengl shader glsl varying
由于顶点着色器每个顶点运行一次(这意味着在三角形中运行3次),如果为每个片段分配变量变量(如在示例中)仅三次,如何计算变量变量?
片段着色器:
precision mediump float;
varying vec4 v_Color;
void main() {
gl_FragColor = v_Color;
}
Run Code Online (Sandbox Code Playgroud)
顶点着色器:
attribute vec4 a_Position;
attribute vec4 a_Color;
varying vec4 v_Color;
void main() {
v_Color = a_Color;
gl_Position = a_Position;
}
Run Code Online (Sandbox Code Playgroud)
所以,问题是,这背后的系统如何知道如何计算每个片段的变量v_Color,因为这个着色器只分配v_Color 3次(在一个三角形中).
顶点着色器的所有输出都是每个顶点。当您设置v_Color在顶点着色器,它设置它的当前顶点。运行片段着色器时,它将读取v_Color图元中每个顶点的值,并根据片段的位置在它们之间进行插值。