DirectX9でスプライトを加算合成する方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
skers

DirectX9でスプライトを加算合成する方法

#1

投稿記事 by skers » 11年前

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の前なども試してみたけどいずれも効果なしです。

加算合成のやり方を教えてください、お願いします。

アバター
海Sea
記事: 102
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: DirectX9でスプライトを加算合成する方法

#2

投稿記事 by 海Sea » 11年前

お手数ですが、
現状のソースコードを記載してもらえますでしょうか。
もしかしたら、他にできない原因が存在する可能性もあるので。

skers

Re: DirectX9でスプライトを加算合成する方法

#3

投稿記事 by skers » 11年前

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の前に先ほどのプログラムを入れてみましたが、ダメだったということです。
何か分かりましたら、よろしくお願いします。

skers

Re: DirectX9でスプライトを加算合成する方法

#4

投稿記事 by skers » 11年前

加算合成のプログラム自体には間違いはないということですか?

旅路のきのこ

Re: DirectX9でスプライトを加算合成する方法

#5

投稿記事 by 旅路のきのこ » 11年前

同じようなところで悩んだことがあります。

バージョンが変わったときに仕様も変わってできなくなったのかもしれない、と思うことにしました。
(DXライブラリではどのように実装しているんでしょう?)
その代わりに、DrawPrimitiveUPを使って板ポリを描くことにしました。
これでスプライトの代わりにはなるので、スプライトは諦めることにしました。
根本的な解決策にはならないかもしれませんが、参考になればと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る