SetDrawBlendMode( DX_BLENDMODE_ADD, 255 );
を使用して加算ブレンドを試みたのですが、画像が光ってくれません。
画像はpng形式です。
何がいけないのでしょうか?
加算ブレンドについて
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 加算ブレンドについて
何に対して加算ブレンドしてのでしょうか?
黒い背景に対して加算ブレンドしても元の色のままとなりますが。
黒い背景に対して加算ブレンドしても元の色のままとなりますが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
たつー
Re: 加算ブレンドについて
返信ありがとうございます。
新・ゲームプログラミングの館の「素材ファイル付のプロジェクトをこちらからダウンロード」のファイルの中の「キャラクタ01.png」
という画像についてです。
新・ゲームプログラミングの館の「素材ファイル付のプロジェクトをこちらからダウンロード」のファイルの中の「キャラクタ01.png」
という画像についてです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 加算ブレンドについて
あっと言葉が足りませんでしたね。たつー さんが書きました:返信ありがとうございます。
新・ゲームプログラミングの館の「素材ファイル付のプロジェクトをこちらからダウンロード」のファイルの中の「キャラクタ01.png」
という画像についてです。
Aと言う画像とBと言う画像を重ねないと加算半透明の効果は得られません。
なので「何に対して加算ブレンドしているのでしょうか?」と言う質問をしています。
「キャラクタ01.png」がAとして、もう一つのBは何でしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
たつー
Re: 加算ブレンドについて
こちらも言葉足らずだったかもしれません。
DXライブラリを使用しています。
新・ゲームプログラミングの館の2.4 の説明によれば
SetDrawBlendMode( DX_BLENDMODE_ADD, 255 ); //ブレンドモードを加算(255/255)に設定
DrawGraph( 300, 200, Handle, TRUE ); //画像の描画
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 ); //ブレンドモードをオフ
とこのような書き方で光る処理ができるとのことです。
Aと言う画像とBと言う画像を重ねないでできると思います。
しかし、なぜか光ってくれません。
初心者なので勘違いがあるかもしれませんが、よろしくお願いします。
DXライブラリを使用しています。
新・ゲームプログラミングの館の2.4 の説明によれば
SetDrawBlendMode( DX_BLENDMODE_ADD, 255 ); //ブレンドモードを加算(255/255)に設定
DrawGraph( 300, 200, Handle, TRUE ); //画像の描画
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 ); //ブレンドモードをオフ
とこのような書き方で光る処理ができるとのことです。
Aと言う画像とBと言う画像を重ねないでできると思います。
しかし、なぜか光ってくれません。
初心者なので勘違いがあるかもしれませんが、よろしくお願いします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 加算ブレンドについて
それは勘違いです。たつー さんが書きました:こちらも言葉足らずだったかもしれません。
DXライブラリを使用しています。
新・ゲームプログラミングの館の2.4 の説明によれば
SetDrawBlendMode( DX_BLENDMODE_ADD, 255 ); //ブレンドモードを加算(255/255)に設定
DrawGraph( 300, 200, Handle, TRUE ); //画像の描画
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 ); //ブレンドモードをオフ
とこのような書き方で光る処理ができるとのことです。
Aと言う画像とBと言う画像を重ねないでできると思います。
しかし、なぜか光ってくれません。
初心者なので勘違いがあるかもしれませんが、よろしくお願いします。
あくまで背景があれば、その色に加算合成することで光って見えるが正しいです。
これは明るさを加算するだけなので、背景が黒なら赤を加算合成してもも赤にしかなりません。
嘘だと思うなら、
SetDrawBlendMode( DX_BLENDMODE_ADD, 255 ); //ブレンドモードを加算(255/255)に設定
DrawGraph( 300, 200, Handle, TRUE ); //画像の描画
DrawGraph( 300, 200, Handle, TRUE ); //画像の描画
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 ); //ブレンドモードをオフ
として見てください。こうすれば少しは白っぽくはなりませんでしたか?
これはA+Aの加算なのでもっと白く飛ばすには違う画像を下に置くのが効果的です。
【補足】
加算合成とはRGBの各色を加算して合成することです。
1ドットに注目して加算合成を説明すると
A: RGB=(10,20,30)
B: RGB=(30,40,10)
を合成すると RGB=(10+30,20+40,30+10)で
合成: RGB=(40,60,40)
とRGBの各色が加算されて合成されます。
なので、
A: RGB=(0,0,0)
B: RGB=(30,40,10)
を合成すると RGB=(0+30,0+40,0+10)で
合成: RGB=(30,40,10)
と合成結果は元のBのままと言うことになります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
たつー
Re: 加算ブレンドについて
返信ありがとうございます。
softya(ソフト屋)さんの言った通りに描画関数を2つ書くことで画像がちゃんと光り、問題が解決しました。
わかりやすい解説でとても勉強になりました。
ありがとうございました。
softya(ソフト屋)さんの言った通りに描画関数を2つ書くことで画像がちゃんと光り、問題が解決しました。
わかりやすい解説でとても勉強になりました。
ありがとうございました。