トップページ > 記事閲覧
αブレンドについて
名前:五月雨 日時: 2017/05/01 03:37

DXライブラリのαブレンドの挙動について質問が 例えば黒、青(24,43,160)、白 3種類の帯状の画像を用意します。 それらを背景上に透過率50%で表示するために以下のようなコードを書きました。 DX.ChangeWindowMode(DX.TRUE); DX.SetGraphMode(1280, 720, 32); DX.DxLib_Init(); BK=DX.LoadGraph("BK.png"); WH = DX.LoadGraph("WH.png"); BL = DX.LoadGraph("BL.png"); BG = DX.LoadGraph("BG.png"); DX.DrawExtendGraph(0, 0, 1280, 720, BG, DX.FALSE); DX.SetDrawBlendMode(DX.DX_BLENDGRAPHTYPE_ALPHA, 128); DX.DrawGraph(100, 100, BK, DX.TRUE); DX.DrawGraph(100, 300, BL, DX.TRUE); DX.DrawGraph(100, 500, WH, DX.TRUE); しかし、これを実行すると 黒→表示されない 青→透過 白→透過 となってしまいます。これは正しい挙動なのでしょうか? ちなみに DX.SetDrawBlendMode(DX.DX_BLENDGRAPHTYPE_ALPHA, 255)にすると透過率0(不透過)という解釈でいいのでしょうか? ご回答のほどお願いいたします。。
メンテ

Page: 1 |

Re: αブレンドについて ( No.1 )
名前:管理人 日時:2017/05/02 21:52

> 黒→表示されない > 青→透過 > 白→透過 > となってしまいます。これは正しい挙動なのでしょうか? DXライブラリは初期状態で黒(R=0,G=0,B=0)が透過色となっていますので、 BK=DX.LoadGraph("BK.png"); こちらを実行する前に DX.SetTransColor(255,0,255); のような、あまり使用されない色を透過色として設定していただくか、 DX.SetUseTransColor(DX.FALSE); を実行して透過色機能を無効化していただければ黒も表示されるようになります > ちなみに DX.SetDrawBlendMode(DX.DX_BLENDGRAPHTYPE_ALPHA, 255)にすると透過率0(不透過)という解釈でいいのでしょうか? はい、DX.SetDrawBlendMode(DX.DX_BLENDGRAPHTYPE_ALPHA, 255)で透過率0(不透過)で、 DX.SetDrawBlendMode(DX.DX_BLENDGRAPHTYPE_NOBLEND, 255)と同じになります
メンテ
Re: αブレンドについて ( No.2 )
名前:五月雨 日時:2017/05/02 22:53

ご回答ありがとうございます。 以下のようにコードを変更して実行してみましたが DX.ChangeWindowMode(DX.TRUE); DX.SetGraphMode(1280, 720, 32); DX.DxLib_Init(); DX.SetUseTransColor(DX.FALSE); BK =DX.LoadGraph("BK.png"); WH = DX.LoadGraph("WH.png"); BL = DX.LoadGraph("BL.png"); BG = DX.LoadGraph("BG.png"); DX.DrawExtendGraph(0, 0, 1280, 720, BG, DX.FALSE); DX.SetDrawBlendMode(DX.DX_BLENDGRAPHTYPE_ALPHA, 255); DX.DrawGraph(100, 100, BK, DX.FALSE); DX.DrawGraph(100, 300, BL, DX.FALSE); DX.DrawGraph(100, 500, WH, DX.FALSE); 次のような結果になってしまいます 黒→相変わらず表示されず 青→なぜか透過される 白→透過されない 私の環境のせいなのかもしれませんが正しい動作をしていないように見えます。 何か回避策はありますか? ねんのため実行結果とソースはリンク先においておきます ttps://cloud.aspcommunication.tk/index.php/s/kzYXmCuoSYYaStf
メンテ
Re: αブレンドについて ( No.3 )
名前:管理人 日時:2017/05/02 23:41

ソースをアップしていただきありがとうございます、手元の環境でも現象を確認できました すみません、SetDrawBlendMode の第一引数が誤っていることが正常な描画結果が得られない原因です DX.DX_BLENDGRAPHTYPE_ALPHA ではなく DX.DX_BLENDMODE_ALPHA となります よろしければお試しください m(_ _;m
メンテ
Re: αブレンドについて ( No.4 )
名前:五月雨(解決) 日時:2017/05/03 00:33

引数を間違えていたとはお恥ずかしい。 無事解決しました。お手数をおかけしました。
メンテ

Page: 1 |

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

   クッキー保存