文字列にグラデーションを付ける方法?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
チルチル

文字列にグラデーションを付ける方法?

#1

投稿記事 by チルチル » 16年前

隣のトビの内容に近いんですが
文字描画係関数で文字列を描画した場合
文字列全体が同じ色になってしまうので
縦方向にグラデーションを付けようと思ったのですが
どのような方法があるでしょうか?

私が唯一思いついたのは
画像をグニャグニャさせるサンプルのように
一行ずつ色を変化させて描画していく方法です

しかしこの方法は私が想像する限りでは
文字列の縦の描画幅が一定でない場合
効率が悪く関数化しにくいので
もっといい方法は無いでしょうか?

環境はDXライブラリです

Justy

Re:文字列にグラデーションを付ける方法?

#2

投稿記事 by Justy » 16年前

いろいろ方法はあると思いますが、1例を挙げますと。

1 文字列を描画するのに十分な縦横のサイズを求める

2 そのサイズと同じ、あるいは以上の空テクスチャを作る(MakeScreen)

3 その空テクスチャをレンダリングターゲットにし(SetDrawScreen)、
背景黒(SetBackgroundColor)でクリア(ClearDrawScreen)後、
文字列を白で描画。
(これで文字が空テクスチャに描き込まれる)

4 乗算ブレンド(SetDrawBlendMode)でグラデーションのかかった
少し大きめのテクスチャを2で作ったテクスチャサイズに合うよう
スケーリングして描画。
(これで文字のところだけグラデーションがかかる)

5 レンダリングターゲットを元に戻し(SetDrawScreen)、
文字列を描いたテクスチャを普通に表示。

ってところでしょうか。

 他にもグラデーションを4でテクスチャで行うのではなく、
5で頂点カラーで行ったりする手もあります。

 要所要所で必要な関数は書いたのであとは適当に検索かけたりして調べてください。

チルチル

Re:文字列にグラデーションを付ける方法?

#3

投稿記事 by チルチル » 16年前

SetDrawScreen関数って表画面と裏画面以外も指定できたんですね・・
ちょっとやってみます

閉鎖

“C言語何でも質問掲示板” へ戻る