こんにちは、シューティングゲームを作ろうと思って最近DXライブラリを使ってプログラミングを学び始めました初心者です。
質問なのですが、
「東方紅魔郷」の体験版から画像を抽出してみたところ、普通の立ち絵の他に、その立ち絵の白黒バージョンの画像があったり、弾やキャラチップの画像にも、それと同じ白黒バージョンの画像があったりしました。
これってマスク用の画像ですか?
態々マスクを使わなくても画像に透過処理を賭ければマスクを使う必要って無くないですか?マスク機能というものがどういう時に使われるのか分かりません。
マスクについて
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: マスクについて
ダメージ・フラシュ等で使われる可能性があります。
一瞬白くなるやつですね。
【補足】
DXライブラリではマスク処理は内部でやってくれます。
あと白くフラッシュするための処理もあります。
一瞬白くなるやつですね。
【補足】
DXライブラリではマスク処理は内部でやってくれます。
あと白くフラッシュするための処理もあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
パラダイス
Re: マスクについて
あーなるほど、そうだったのですか・・・
>>DXライブラリではマスク処理は内部でやってくれます。
というのはつまり・・・マスク用の画像を用意せずともマスク処理は可能ってことですか?
>>あと白くフラッシュするための処理もあります。
画像の色を白にする関数ですか?
例でいえば、画像の輝度を設定するSetDrawBright()のような・・・
何もわからずすみません。
>>DXライブラリではマスク処理は内部でやってくれます。
というのはつまり・・・マスク用の画像を用意せずともマスク処理は可能ってことですか?
>>あと白くフラッシュするための処理もあります。
画像の色を白にする関数ですか?
例でいえば、画像の輝度を設定するSetDrawBright()のような・・・
何もわからずすみません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: マスクについて
アルファチャンネルだけでなく、bmpだと(0,0,0)を透明として扱えますよね?パラダイス さんが書きました:あーなるほど、そうだったのですか・・・
>>DXライブラリではマスク処理は内部でやってくれます。
というのはつまり・・・マスク用の画像を用意せずともマスク処理は可能ってことですか?
SetTransColor()で変更できますが。
あれも一種のマスク処理です(内部では透明色で実現しているはず)。
SetDrawBright()で大抵事は足りるはずですが、SetDrawBlendMode()でカラー演算するという手もあります(反転+加算)。パラダイス さんが書きました: >>あと白くフラッシュするための処理もあります。
画像の色を白にする関数ですか?
例でいえば、画像の輝度を設定するSetDrawBright()のような・・・
何もわからずすみません。
【補足】GraphFilter()でシェーダー処理という手もあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
パラダイス
Re: マスクについて
>>アルファチャンネルだけでなく、bmpだと(0,0,0)を透明として扱えますよね?
前に黒で書いた絵をbmpで保存してテスト表示させてみたところ、所々線が切れてたことがあります。
DXライブラリの仕様で透過されてただけだったんですね。てっきりプログラムや環境、それか絵自体が悪かったのかと思ってました。
>>SetDrawBlendMode()でカラー演算するという手もあります(反転+加算)。
そんなことできたんですね、考えてもみませんでした・・・
でも下の効果で画像を表示してみたところ、ちょっと明るくなるだけで真っ白になるということはありませんでした。 完全な白になるまでフラッシュをさせるにはカラー演算するよりもSetDrawBright()、またはGraphFilter()を使うべきですかね?
前に黒で書いた絵をbmpで保存してテスト表示させてみたところ、所々線が切れてたことがあります。
DXライブラリの仕様で透過されてただけだったんですね。てっきりプログラムや環境、それか絵自体が悪かったのかと思ってました。
>>SetDrawBlendMode()でカラー演算するという手もあります(反転+加算)。
そんなことできたんですね、考えてもみませんでした・・・
でも下の効果で画像を表示してみたところ、ちょっと明るくなるだけで真っ白になるということはありませんでした。 完全な白になるまでフラッシュをさせるにはカラー演算するよりもSetDrawBright()、またはGraphFilter()を使うべきですかね?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: マスクについて
いえ、2回描画します。パラダイス さんが書きました:>>アルファチャンネルだけでなく、bmpだと(0,0,0)を透明として扱えますよね?
前に黒で書いた絵をbmpで保存してテスト表示させてみたところ、所々線が切れてたことがあります。
DXライブラリの仕様で透過されてただけだったんですね。てっきりプログラムや環境、それか絵自体が悪かったのかと思ってました。
>>SetDrawBlendMode()でカラー演算するという手もあります(反転+加算)。
そんなことできたんですね、考えてもみませんでした・・・
でも下の効果で画像を表示してみたところ、ちょっと明るくなるだけで真っ白になるということはありませんでした。 完全な白になるまでフラッシュをさせるにはカラー演算するよりもSetDrawBright()、またはGraphFilter()を使うべきですかね?
SetDrawBlendMode( DX_BLENDMODE_INVSRC, 255 );
DrawGraph( 0, 0, "Test.png", TRUE );
etDrawBlendMode( DX_BLENDMODE_ADD, 255 );
DrawGraph( 0, 0, "Test.png", TRUE );
まぁ描画コストがかかるのであんまりよろしくないとは思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
パラダイス
Re: マスクについて
白くなりました、演算って普通に足しあう訳じゃなかったんですねorz
とりあえずマスクについての疑問は解けましたんで解決にします、ありがとうございました。
とりあえずマスクについての疑問は解けましたんで解決にします、ありがとうございました。