指定範囲の輝度の調節

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

指定範囲の輝度の調節

#1

投稿記事 by ライス » 15年前

今RPGを制作しているのですが、輝度の事で一つ質問があります。
制作中のRPGは一定時間が経過すると夜になり、
さらに一定時間が経過するとまた昼になるという事を繰り返す設定になっています。
しかし夜になり画面が暗くなると、メッセージが読みづらいのです
なのでメッセージが表示されてる範囲だけは暗くしない、
または暗くなった後にメッセージが表示されてる部分だけ明るくしてからScreenFlipするようにしたいです。
しかしそのやり方が分かりません。
指定範囲だけ輝度を調節する方法はあるのでしょうか?
指定したい範囲は、長方形の形になっています。

もし上記の方法とは別の方法で可能な場合は、そちらでも構いません。

どなたかご教授宜しくお願いしますm(_ _)m

<環境>
・Windows7
・Microsoft Visual C++ 2010 Express
・DXライブラリ

Dixq (管理人)

Re:指定範囲の輝度の調節

#2

投稿記事 by Dixq (管理人) » 15年前

もしかして

SetDrawBright(r,g,b);
描画処理全て();
SetDrawBright(255,255,255);

このような構造になっていますか?
輝度の設定は描画処理一つ一つに対してする物だと思いますから、
一つ描画処理が終わるごとに輝度を戻すほうが良いですよ。
毎回この関数のセットで挟むのが面倒なら、輝度をセットして描画する関数を自作しても良いと思います。
ある領域だけ暗くしないのではなく、暗くする必要のある領域だけ暗くするようにした方が良いでしょう。

もしどうしてもある領域だけ暗くしたいなら
(x,y)から横,縦=w,hの領域をアルファブレンドで
SetDrawBlendMode( DX_BLENDMODE_ALPHA, *** );
DrawBox( x,y,x+w,y+h, GetColor(0,0,0), TRUE );
重ねてあげればよいと思います。

ちなみに減算ブレンドで暗くする方法は計算量が非常に多いので避けた方が良いです。

ライス

Re:指定範囲の輝度の調節

#3

投稿記事 by ライス » 15年前

ありがとうございます!
キューさんのご指摘の通りでした。
私のイメージしていた通りにできました。

また、減算ブレンドについての注意もありがとうございます。
メッセージボックスを青色の半透明にするのに減算ブレンドを利用していましたので、
さっそく他の方法でやってみたいと思います。

本当にありがとうございましたm(_ _)m

閉鎖

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