直线或者三角形上的每个片段混合后的颜色可以用一个varying生成。我们不仅能混合颜色,还可以给varying传递任何值,OpenGL会选择属于那条直线的两个值,或者属于那个三角形的三个值,并平滑地在那个基本图元上混合这些值,每个片段都会有一个不同的值。这种混合是使用线性插值实现的。要了解它是怎么工作的,让我们首先以一条直线为例开始讲解。
1.沿着一条直线做线性插值
假设有一条直线,它有一个红色顶点和一个绿色顶点,我们要从一个向另外一个混合颜色。
在这条直线的左边,每个片段的颜色更多地呈红色;随着向右边前进,那些片段的红色分量逐渐减少,在中间处,它们处于红色和绿色之间;随着与绿色顶点越来越近,片段也就变得越来越绿了。
我们可以看到每种颜色分量都随着直线长度线性缩放。因为这条线段的左侧顶点是红色,而右侧顶点是绿色,它的左端就是100%红色,中间是50%红色,而右端是0%的红色。
绿色的变化也是一样的。因为左侧顶点是红色,而右侧顶点是绿色的,这个线段的左端就是0%绿色,中间是50%绿色,而右端就是100%绿色。
一旦我们把这两个颜色叠加在一起,最终就得到一条混合后的直线。
这就是线性插值的基本解释。每种颜色的强度依赖于每个片段与包含那个颜色的顶点的距离。