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

标签 android opengl-es-2.0 gradient

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

enter image description here

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

enter image description here

  1. 上部矩形的颜色从蓝色绿色变化
  2. 中间矩形的颜色统一为绿色
  3. 下方矩形的颜色从绿色红色不等

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

enter image description here

可以做到这些吗?

[注意:矩形的数量可以是可变的。它是三个矩形的样本。我还可以得到 100 个矩形。然后我会从上到下改变颜色从蓝色红色]

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

enter image description here

最佳答案

您通过在 fragment 着色器中使用不同颜色看到的插值是颜色分量的线性插值,如下所示:

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 个相等的矩形,您需要获取中间位置的比例,即 0.5;如果有 3 个相等的三角形,则需要 2 个中间比例,例如 0.3333 和 0.6666...因此,模式是,对于 N 个矩形,您需要 N+1 个比例:

scale[i] = 1.0/N * i

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

关于android - 三个相邻矩形的颜色连续变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903413/

相关文章:

r - ggplot2 线周围的缓冲区

java - 如何从所有用户的 FirebaseRecyclerAdapter 中隐藏当前用户?

android - 使用给定自定义 api 的 Http Post android 登录

android - 如何制作自定义 SeekBar 以在栏中显示颜色渐变?

ios - GPUImage:EAGLContext和线程队列

iphone - iPhone中折线图的渐变效果

具有清晰颜色边界的CSS 3色线性渐变

java - Android 工具栏菜单项保持为空

iphone - 将 OpenGL 1.1 代码转换为 OpenGL 2.0

c++ - 如何将行进方 block 用于多个轮廓?