トップページ > 過去ログ > 記事閲覧
画像を明るくしたい
名前:SB 日時: 2012/01/21 10:00

いつもお世話になっています。 私は今までDXライブラリを使わせていただき、3本ほど2Dゲームを作ってきたのですが、ある処理を毎回使っています。 それは「キャラクターを白く光らせる」という処理です。 例えば「キャラクターがワープして現れた」というような表現をしたい時に 「白いシルエットから徐々に明るさが失われていき、通常の画像になる」 としています。 SetDrawBrightで輝度は変えられますが、これは暗い方向にしか変えられず、明るくする事はできません。 現在私がとっている方法は、 「白いシルエット画像を別に用意し、キャラの画像にアルファ合成で上書き、透明度を上げる」 というやり方です。 これだといちいちシルエット画像を用意しないといけなく、手間です。 あるいは「加算合成」で上書きするという方法でもいけるかもしれませんが、 どちらにしろ「画像を二度以上上書きする」というスッキリしないやり方に思えます。 割と使用頻度の高い処理なので、もっと良いやり方にしたいのですが、他に何か方法はありますでしょうか?

Page: 1 |

Re: 画像を明るくしたい ( No.1 )
名前:softya(ソフト屋) 日時:2012/01/21 11:03

GraphFilterBltのDX_GRAPH_FILTER_HSBで明度を変えて何とかなりませんか? 「DXライブラリ置き場 リファレンスページ」 homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R3N27 これで先に白い画像を用意できます。
Re: 画像を明るくしたい ( No.2 )
名前:いっち 日時:2012/01/21 15:28

> あるいは「加算合成」で上書きするという方法でもいけるかもしれませんが、 > どちらにしろ「画像を二度以上上書きする」というスッキリしないやり方に思えます。 わりと一般的な方法だと思います。 どうしてもと言う場合はsoftya(ソフト屋)さんの仰る通りシェーダーを利用するのが手っ取り早いのではないでしょうか。 場合によっては DX_BLENDMODE_ALPHA_X4 か DX_BLENDMODE_ADD_X4 が使用できるかもしれません。 詳しくは以下のスレッドをご覧下さい。 > h t t p ://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2142 //- 以下、テストコード -// #include "DxLib.h" int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { ChangeWindowMode( TRUE ); SetWindowText( "DxLib:" DXLIB_VERSION_STR ); if ( DxLib_Init( ) == -1 ) return -1; int white = GetColor( 255, 255, 255 ); int GraphHandle = LoadGraph( "test1.bmp" ); int bright = 0, step = 1; SetDrawScreen( DX_SCREEN_BACK ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { bright += step; if ( bright <= 0 || 255 <= bright ) step = -step; ClearDrawScreen( ); DrawFormatString( 0, 0, white, "TEST" ); DrawGraph( 0, 0, GraphHandle, TRUE ); SetDrawBlendMode( DX_BLENDMODE_ALPHA_X4, 255 ); SetDrawBright( bright, bright, bright ); DrawGraph( 160, 0, GraphHandle, TRUE ); SetDrawBright( 255, 255, 255 ); SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 255 ); ScreenFlip( ); } DxLib_End( ); return 0; }
Re: 画像を明るくしたい ( No.3 )
名前:SB 日時:2012/01/21 20:38

softya(ソフト屋)さん、いっちさん、ありがとうございます。 色々試して検討させていただきます。

Page: 1 |