2012-03-14 5 views
3

OpenGlで粒子システムを作成しました。私が火や梁などの燃えるような効果を得たい場合(システムの種類が「輝き」、すべての色を融合させる)、私はOpenGLでこのメソッド呼び出しを使用します。glBlendFunc(............)と同等のDirectX

glBlendFunc(GL_SRC_ALPHA,GL_SRC_ALPHA) 
glBlendFunc(GL_DST_ALPHA,GL_ONE) 

私は今ここでのDirect3D

を使用して同じことをやろうとしているが、私が試してみましたものです:

graphicsDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); 
graphicsDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); 
graphicsDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE); 

が、これは私の外見上のすべてでは全く効果がありませんゲーム! 誰かが問題になるかもしれない手がかりを持っていますか?

+0

あなたが得ようとしている効果がはっきりしていません。 2つの(src/dst)ARGBカラーの例で詳しく説明してください。 – real4x

+0

私はまったく効果を得ようとしています。私の質問によれば、上記のglBlenFunc()呼び出しと同じ効果を持つ等価なdirectX呼び出しを探しています。 –

答えて

0

試してみてください。

graphicsDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); 
graphicsDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); 
graphicsDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); 
+0

コードを試しましたが、まだ効果がありませんでした。私はどこかで何かが起こっていると思う。おそらく、デバイスが設定されている方法が間違っている –

0

私はちょうどのOpenGLに切り替えることになりました。しかし、助けを借りてくれた人に感謝します。D

+1

あなたのために良い今、あなたはクロスプラットフォームになることができます。 – awiebe