Photoshop フィルター乗算を Direct3D で複製しようとしています。私はさまざまなレンダリング状態について読んでグーグルで調べてきましたが、効果はほとんど機能しています。問題は、テクスチャのアルファ値を無視していることです。
状況を説明する画像は次のとおりです。
http://www.kloonigames.com/petri/stackoverflow_doesnt_allow_.jpg
これに対する 1 つの解決策を見つけました。それは、画像を透明度なしで白い背景で保存することでした。しかし、私はこの解決策に満足していません。問題は、本当にアルファ値を使用する必要があることです。画像を徐々にフェードアウトさせたい。ブレンドモードがアルファ値を無視している場合、これを行うことはできません。
問題は、画像をアルファでレンダリングする方法です。
ブレンドモードのコードは次のとおりです。
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);
編集により SetTextureStageState が追加されました
dev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
dev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
dev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
dev->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);