ページ 11

この半透明の処理で思った通りに出力するにはどうしたらいいでしょうか?

Posted: 2016年5月08日(日) 12:05
by muramatsu
円が描かれたpng画像を用意して円の周りが完全に透過されるように透明度を設定したファイルを描画しています。

//SRC,DESTブレンドモード設定
SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA);
SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA);
//色設定
SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
//透明設定
SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
//頂点色
RGBA(0.5f, 0.5f, 0.5f, 1.0f);

上記の設定で描画すると綺麗に画像の円の周りが透過されて
頂点色も画像に綺麗に反映されて少し暗く描画されます。

SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA);
SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCCOLOR);

ところがブレンドモードを上記に設定し合成方法を変えると
画像の円の周りが黒い半透明になって画像が綺麗に表示されません。
頂点色をRGBA(1.0f, 1.0f, 1.0f, 1.0f);とすれば画像が透過されますが頂点色を変えるとダメみたいです。
この上記のブレンド設定を保持したまま画像の円の周りを綺麗に透過させる方法はあるでしょうか?
(もし不可能なら上記のブレンド設定に似た結果のものでも大丈夫です)

SRC,DESTブレンドモード一覧
https://msdn.microsoft.com/ja-jp/library/cc324307.aspx
色、透明、設定 一覧
https://msdn.microsoft.com/ja-jp/library/cc324339.aspx

Re: この半透明の処理で思った通りに出力するにはどうしたらいいでしょうか?

Posted: 2016年5月09日(月) 17:26
by ISLe
DXライブラリの公式サイトで
『DXライブラリミニテクニック』
『乗算済みαのすすめ』
と辿った先にあるページに書かれていることを試してみてください。

Re: この半透明の処理で思った通りに出力するにはどうしたらいいでしょうか?

Posted: 2016年5月09日(月) 17:36
by muramatsu
ご返信ありがとうございます!