DirectX9で、スプライトを加算合成をしたいのですが、うまくできません。
調べたところ、
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
pDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);
pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
この4行をスプライトをDrawする前に書いておけばいいと出てきたので、pSprite->Drawをする直前に書いてみましたが、ダメでした。
pSprite->Beginの前なども試してみたけどいずれも効果なしです。
加算合成のやり方を教えてください、お願いします。
DirectX9でスプライトを加算合成する方法
Re: DirectX9でスプライトを加算合成する方法
お手数ですが、
現状のソースコードを記載してもらえますでしょうか。
もしかしたら、他にできない原因が存在する可能性もあるので。
現状のソースコードを記載してもらえますでしょうか。
もしかしたら、他にできない原因が存在する可能性もあるので。
Re: DirectX9でスプライトを加算合成する方法
void DrawSprite(GRAPH_C G,float X,float Y)
{
RECT rect={G.X1,G.Y1,G.X2,G.Y2};
D3DXVECTOR3 v3Center(G.CenterX,G.CenterY,0);
D3DXVECTOR3 v3Position(X,Y,0);
pSprite->Begin(D3DXSPRITE_ALPHABLEND);
pSprite->Draw(GraphicLec[G.G_Num],&rect,&v3Center,&v3Position,D3DCOLOR_ARGB(255,255,255,255));//テクスチャのポインタ、領域の短形のポインタ、中心、位置、アルファ値と色
pSprite->End();
}
これが描画する関数です。ここのDrawの前に先ほどのプログラムを入れてみましたが、ダメだったということです。
何か分かりましたら、よろしくお願いします。
{
RECT rect={G.X1,G.Y1,G.X2,G.Y2};
D3DXVECTOR3 v3Center(G.CenterX,G.CenterY,0);
D3DXVECTOR3 v3Position(X,Y,0);
pSprite->Begin(D3DXSPRITE_ALPHABLEND);
pSprite->Draw(GraphicLec[G.G_Num],&rect,&v3Center,&v3Position,D3DCOLOR_ARGB(255,255,255,255));//テクスチャのポインタ、領域の短形のポインタ、中心、位置、アルファ値と色
pSprite->End();
}
これが描画する関数です。ここのDrawの前に先ほどのプログラムを入れてみましたが、ダメだったということです。
何か分かりましたら、よろしくお願いします。
Re: DirectX9でスプライトを加算合成する方法
同じようなところで悩んだことがあります。
バージョンが変わったときに仕様も変わってできなくなったのかもしれない、と思うことにしました。
(DXライブラリではどのように実装しているんでしょう?)
その代わりに、DrawPrimitiveUPを使って板ポリを描くことにしました。
これでスプライトの代わりにはなるので、スプライトは諦めることにしました。
根本的な解決策にはならないかもしれませんが、参考になればと思います。
バージョンが変わったときに仕様も変わってできなくなったのかもしれない、と思うことにしました。
(DXライブラリではどのように実装しているんでしょう?)
その代わりに、DrawPrimitiveUPを使って板ポリを描くことにしました。
これでスプライトの代わりにはなるので、スプライトは諦めることにしました。
根本的な解決策にはならないかもしれませんが、参考になればと思います。