三个相邻矩形的颜色连续变化

Continuous varying color in three adjacent rectangles

我可以用三种不同的颜色绘制三个相邻的矩形,如下所示:

在这里,在这三个矩形中我可以使用如下不同的颜色:

  1. 上部矩形的颜色从 BLUEGREEN
  2. 中间的矩形是绿色
  3. 的统一颜色
  4. 下方矩形的颜色从 绿色红色

但是,我需要一些不同的东西。我想在这三个矩形中使用从 BLUERED 的连续变化颜色。我可以使用一个矩形而不是三个。但是我必须使用三个矩形..我想要如下:

可以做到这些吗?

[注意:可以有可变数量的矩形。它是三个矩形的样本。我也可以获得 100 个矩形。然后我将从 BLUERED 从上到下改变颜色]

其实我用很多矩形画了一辆汽车。现在我需要用渐变色给它上色。

您在片段着色器中使用不同颜色看到的插值是颜色分量的线性插值:

R = R1 + (R2-R1)*scale
G = G1 + (G2-G1)*scale
B = B1 + (B2-B1)*scale
A = A1 + (A2-A1)*scale

在你的例子中 C1(0,0,1,1)C2(1,0,0,1) 是插值的。比例是 [0,1].

范围内从第一个顶点到最后一个顶点的相对值

您需要做的是在设置顶点颜色时实现相同的算法,以实现平滑的渐变。要使用我发布的算法,你已经有了 2 种颜色,你只需要比例:顶部顶点比例始终为 0,底部顶点比例始终为 1。然后必须相对计算所有中间顶点:对于 2 个相等的矩形,你需要获得中间位置的比例为 .5;如果有 3 个相等的三角形,则需要 2 个中间比例尺,例如 .3333 和 .6666...所以模式是,对于 N 个矩形,您需要 N+1 个比例尺:

scale[i] = 1.0/N * i

如果矩形的大小不相等,您需要做的是求出矩形高度的总和,然后在它们之间分配值。