トップページ > 記事閲覧
透明度を減らすようなブレンドモード
名前:タマ 日時: 2016/09/04 00:43

関数MakeScreenによって作成された、透明情報をもつスクリーンに対し、 グレースケールのマスク画像を描画することで、 マスク画像の白い部分(輝度 = 255)は、α値が描画前の1倍に(変化無し)、 マスク画像の黒い部分(輝度 = 0)は、α値が描画前の0倍に(透明になる) なるブレンドモードは存在するのでしょうか? 分かりづらくて大変申し訳ありません……。 色成分は変化させず、透明度のみ変化する描画が行いたいのです。 式で書くと以下のようなものです。 (描画後のα値) = (描画前のα値) * (グレースケールの画像の輝度) / 255 または、 (描画後のα値) = (描画前のα値) * (グレースケールの画像の輝度 * SetDrawBlendModeの第二引数 / 255) / 255 ※描画後のα値、描画前のα値、グレースケールの画像の輝度は0〜255の値をとります このようなブレンドモードは存在しますか? あるいは、自分で新しくブレンドモードを作ることは可能でしょうか? それとも別の方法でこれと同じ結果を得る事はできますでしょうか? つい先日、別の質問したばかりで申し訳ありません。 お答えいただければ幸いです。
メンテ

Page: 1 |

Re: 透明度を減らすようなブレンドモード ( No.1 )
名前:管理人 日時:2016/09/04 17:11

ご所望のブレンドモードは無く、新たに作ることもできませんが、 関数 GraphBlendBlt を使用することで同じような結果を得ることはできます( ただしかなり不便です… ) その方法は GraphBlendBlt のブレンドタイプ DX_GRAPH_BLEND_RGBA_SELECT_MIX と DX_GRAPH_BLEND_MULTIPLE_A_ONLY を使用します 1.準備として予め MakeScreen で描画先と同じ大きさのアルファチャンネル付きのスクリーン画像を4つ作成しておく 2.スクリーン画像Aに『α値を減らしたい画像となるもの』を描画 3.スクリーン画像Bに『輝度をα値としてスクリーン画像Aのα値と乗算したいもの』を描画 4.GraphBlendBlt で DX_GRAPH_BLEND_RGBA_SELECT_MIX を使用してスクリーン画像BのR・G・Bのどれかをα値とした  ものをスクリーン画像Cに転送 5.GraphBlendBlt で DX_GRAPH_BLEND_MULTIPLE_A_ONLY を使用してスクリーン画像Aのα値とスクリーン画像Cの  α値を乗算したものをスクリーン画像Dに転送 ↑これをすることで、スクリーン画像Dが「RGB値は変化せず、α値とα値を乗算した画像」となります SetDrawBlendMode でブレンドモードを設定して DrawGraph で描画、に比べたら信じられないほど手間も処理負荷も掛かって且つ不便ですが… (- -;;
メンテ
Re: 透明度を減らすようなブレンドモード ( No.2 )
名前:タマ(解決) 日時:2016/09/04 22:46

GraphBlend には DX_GRAPH_BLEND_MULTIPLE_A_ONLY というブレンド効果があるのですね! すばやい回答ありがとうございます。 大変感謝です m(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存