【发布时间】:2014-03-17 05:30:45
【问题描述】:
我正在尝试弄清楚如何实现两种颜色之间的平滑过渡。
I.E.此图取自Wikipedia。
当我尝试使用我的代码 (C++) 做同样的事情时,首先想到的是使用 HSV 颜色空间,但会出现令人讨厌的中间颜色。
实现这一目标的好方法是什么?
【问题讨论】:
标签: colors
我正在尝试弄清楚如何实现两种颜色之间的平滑过渡。
I.E.此图取自Wikipedia。
当我尝试使用我的代码 (C++) 做同样的事情时,首先想到的是使用 HSV 颜色空间,但会出现令人讨厌的中间颜色。
实现这一目标的好方法是什么?
【问题讨论】:
标签: colors
这听起来很奇怪,也许……但顶点着色器会很好地做到这一点。如果那是一个四边形(两个 tris),那么将一种颜色放在左边 2 个顶点上,另一种放在右边,它应该很好地融合在一起。
警告:假设您使用的是某种 OpenGL。
【讨论】:
我觉得我可以回答的唯一部分问题是,您必须以某种方式在 HSV 的 H 部分中转换过多的值。
【讨论】:
这是由于两者之间缺乏颜色造成的,因为黑色(或在您的情况下为灰色)= 不饱和。这就像将两个透明的渐变图像放在一起,中间有一个透明区域,因为 2 个 50% 的透明度不等于 100% 纯色。
为避免这种情况,我建议将一种颜色置于另一种之上,然后将其淡化为透明。这样,上面的过渡就有一个纯色基础。
【讨论】:
我不知道您使用什么来显示(DirectX、Windows 显示器或其他),但尝试只使用两个图像,一个纯色和一个从纯色渐变到透明的单色。这可能行得通。
【讨论】: