我正在为 Monogame/XNA 制作一个 GUI 库,我决定不使用按钮的纹理,而是使用结构来保存渐变中的渐变和颜色信息。然后我可以将宽度和高度传递给结构,它会根据存储在其中的两种颜色计算渐变,并传回具有正确尺寸和应用渐变的纹理。
我想知道的是计算两种颜色渐变(具有透明度)的最有效方法。我已经看到了很多答案,包括着色器、HSL 转换以及将颜色应用于白色->黑色渐变。它们都不是非常详细或提供的代码示例。我认为最有效的方法是使用着色器绘制到渲染目标,但我几乎没有着色器方面的经验。而且由于它是一个库 (.dll),我什至不知道如何加载着色器之类的内容并使用它们进行绘制。
这就是我想要的效果: 图片
另外,我正在尝试使其更具可定制性,以允许渐变的不同方向,即
public enum GradientStyle
{
NONE = 0,
RADIAL,
HORIZONTAL,
VERTICAL,
BLEND
};
这绝不是必需的。我现在只想知道如何制作一个简单的渐变。