トップページ > 記事閲覧
半透明のグラフィックについて
名前:homu 日時: 2015/08/08 18:57

半透明の画像を描画するときの仕様について質問です。 半透明の画像を描画するときに, アルファ値が正常 (思い通り) に反映される場合と そうでない場合があります。 MakeScreen関数でグラフィックを作成し, そこに LoadGraph関数で読み込んだ画像をDrawGraph関数で描画 もしくは, LoadGraphScreen関数で画像を描画し, その後, MakeScreen関数で作成したグラフィックをDX_SCREEN_BACK へと描画すると, 半透明部分の透明度が本来より高くなってしまっているように見えます。 (完全な不透明には変化が見られない) LoadGraph関数で読み込んだ画像を直接DX_SCREEN_BACKに描画した場合だと, (LoadGraphScreen関数も同様) 正常に描画されているように見えます。 真っ白 (R:255, G:255, B:255, A:255) から 透明 (R:255, G:255, B:255, A:0) の グラデーション画像を描画してみたところ, このような結果となりました。 黒背景 (ClearDrawScreen関数を使用) と紫の四角形の上に描画しています。 ttp://s1.gazo.cc/up/146200.png 左が一度MakeScreen関数で作成したグラフィックを経由して描画したもので, 右が直接描画したものです。 なぜグラフィックを経由しただけでこのような違いが出てしまうのでしょうか? 経由する回数が増えるとさらに半透明部分の透明度が高くなってしまいます。 VisualC++用 3.14f VisualC#用 3.14f VisualC#用 3.14a で試してみましたが, 全て同じ結果でした。 よろしくお願いします。
メンテ

Page: 1 |

Re: 半透明のグラフィックについて ( No.1 )
名前:管理人 日時:2015/08/08 14:40

MakeScreen で作成したアルファチャンネルつきの描画対象にできるグラフィックハンドルに対して行った 半透明描画の結果が、そのハンドルを使用して描画を行った際に意図した結果と異なってしまうという現象は 「乗算済みα」というものを使用すると解決することができますので、よろしければこちらの「乗算済みα」について 解説しているページをご覧になってみてください m(_ _)m <乗算済みアルファのすすめ> http://homepage2.nifty.com/natupaji/DxLib/lecture/PremulAlpha/PremulAlpha.html
メンテ
Re: 半透明のグラフィックについて ( No.2 )
名前:homu(解決) 日時:2015/08/08 18:54

乗算済みα用のブレンドモードに設定することで思い通りの描画を実現することができました。 丁寧なご回答ありがとうございました。 以下は質問とは関係のない内容です。 画像のURLの右にある文字列が画像の削除パスとなっているのですが, 投稿する際に消し忘れてしまいました。すみません。(記事の編集パスも設定し忘れたようです..) お手数ですが, 第三者にいたずら等で削除されないために, 投稿した文章を編集して頂けないでしょうか?
メンテ
Re: 半透明のグラフィックについて ( No.3 )
名前:管理人 日時:2015/08/08 19:00

意図した通りの表現ができたようで何よりです (^ ^ > お手数ですが, 第三者にいたずら等で削除されないために, > 投稿した文章を編集して頂けないでしょうか? 編集しておきました、括弧で括られた部分ですよね?
メンテ
Re: 半透明のグラフィックについて ( No.4 )
名前:homu(解決) 日時:2015/08/08 19:30

> 括弧で括られた部分ですよね? はい, そうです。 ありがとうございます!
メンテ

Page: 1 |

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

   クッキー保存