Monogame/XNA 用の GUI ライブラリを作成していますが、ボタンにテクスチャを使用する代わりに、構造体を使用してグラデーションとグラデーションの色に関する情報を保持することにしました。次に、構造体に幅と高さを渡すと、格納されている 2 つの色からグラデーションが計算され、正しい寸法と適用されたグラデーションを含むテクスチャが返されます。
私が疑問に思っていたのは、2 色のグラデーション (透明度あり) を計算する最も効率的な方法でした。シェーダー、HSL 変換、白から黒へのグラデーションへの色の適用など、これに対する多くの回答を見てきました。それらのどれも、非常に詳細または提供されたコード例ではありませんでした。これを行う最も効率的な方法は、シェーダーを使用してレンダー ターゲットに描画することだと思いますが、シェーダーの経験はほとんどありません。また、これはライブラリ (.dll) であるため、シェーダーなどのコンテンツを読み込んで描画する方法さえ知りません。
これは私が目指している効果のようなものです: 画像
また、グラデーションのさまざまな方向を許可するように、よりカスタマイズ可能にしようとしています。
public enum GradientStyle
{
NONE = 0,
RADIAL,
HORIZONTAL,
VERTICAL,
BLEND
};
これは決して必須ではありません。今のところ、単純なグラデーションの作成方法を知りたいだけです。