いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

アルファブレンド

あるテクスチャをレンダリングするとき、ちょっとかっこよくしようかな〜とか思い、加算合成をする事にしてみました。
D3DRS_SRCBLEND = D3DBLEND_ONE
D3DRS_DESTBLEND = D3DBLEND_ONE
ってやつですね。

で、そのままのレンダリングステートだと、全部加算合成になり大変な事態になるので目的のテクスチャのレンダリングが終わったら元に戻します。

D3DRS_SRCBLEND = D3DBLEND_ONE
D3DRS_DESTBLEND = D3DBLEND_ZERO
レンダリング先を0にして、レンダリング元の色をばしっと置き換える…と。

これでレンダリングしてみたら………なんかおかしい。本来透明な部分が白く表示されてしまっているではありませんか。…ナゼ?

…と試行錯誤して30分。気づきました…。
いわゆる「普通のアルファブレンディング」の状態に持っていくには

D3DRS_SRCBLEND = D3DBLEND_SRCALPHA
D3DRS_DESTBLEND = D3DBLEND_INVSRCALPHA

という設定にするのが正解でした。orz
つか、コードの最初の方では、しっかりこの設定を記述してあったのに、何ですっかり設定方法を忘れてますか自分。(涙