隣のトビの内容に近いんですが
文字描画係関数で文字列を描画した場合
文字列全体が同じ色になってしまうので
縦方向にグラデーションを付けようと思ったのですが
どのような方法があるでしょうか?
私が唯一思いついたのは
画像をグニャグニャさせるサンプルのように
一行ずつ色を変化させて描画していく方法です
しかしこの方法は私が想像する限りでは
文字列の縦の描画幅が一定でない場合
効率が悪く関数化しにくいので
もっといい方法は無いでしょうか?
環境はDXライブラリです
文字列にグラデーションを付ける方法?
Re:文字列にグラデーションを付ける方法?
いろいろ方法はあると思いますが、1例を挙げますと。
1 文字列を描画するのに十分な縦横のサイズを求める
2 そのサイズと同じ、あるいは以上の空テクスチャを作る(MakeScreen)
3 その空テクスチャをレンダリングターゲットにし(SetDrawScreen)、
背景黒(SetBackgroundColor)でクリア(ClearDrawScreen)後、
文字列を白で描画。
(これで文字が空テクスチャに描き込まれる)
4 乗算ブレンド(SetDrawBlendMode)でグラデーションのかかった
少し大きめのテクスチャを2で作ったテクスチャサイズに合うよう
スケーリングして描画。
(これで文字のところだけグラデーションがかかる)
5 レンダリングターゲットを元に戻し(SetDrawScreen)、
文字列を描いたテクスチャを普通に表示。
ってところでしょうか。
他にもグラデーションを4でテクスチャで行うのではなく、
5で頂点カラーで行ったりする手もあります。
要所要所で必要な関数は書いたのであとは適当に検索かけたりして調べてください。
1 文字列を描画するのに十分な縦横のサイズを求める
2 そのサイズと同じ、あるいは以上の空テクスチャを作る(MakeScreen)
3 その空テクスチャをレンダリングターゲットにし(SetDrawScreen)、
背景黒(SetBackgroundColor)でクリア(ClearDrawScreen)後、
文字列を白で描画。
(これで文字が空テクスチャに描き込まれる)
4 乗算ブレンド(SetDrawBlendMode)でグラデーションのかかった
少し大きめのテクスチャを2で作ったテクスチャサイズに合うよう
スケーリングして描画。
(これで文字のところだけグラデーションがかかる)
5 レンダリングターゲットを元に戻し(SetDrawScreen)、
文字列を描いたテクスチャを普通に表示。
ってところでしょうか。
他にもグラデーションを4でテクスチャで行うのではなく、
5で頂点カラーで行ったりする手もあります。
要所要所で必要な関数は書いたのであとは適当に検索かけたりして調べてください。