由于顶点着色器每个顶点只运行一次(也就是在三角形中运行3次),如果将varying变量仅分配了三次,那么它如何为每个片元计算呢?
片元着色器:
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
值并根据片段的位置在它们之间进行插值。没有覆盖。 - Colonel Thirty Two