2012-03-14 29 views
3

我在OpenGl中創建了一個很好的粒子系統。當我想要獲得火焰或光束的燃燒效果時(系統類型「發光」並將所有顏色融合在一起),我使用OpenGL的這種方法調用。DirectX相當於glBlendFunc(............)

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

目前尚不清楚你到底想要達到什麼效果。你能否在兩個(src/dst)ARGB顏色的例子中更詳細地解釋它? – real4x 2012-03-15 17:50:22

+0

我試圖只是得到任何效果。正如我的問題所說,我正在尋找與上述glBlenFunc()調用 – 2012-03-29 23:08:38

回答

0

嘗試:

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

具有相同效果的等效directX調用,我嘗試了代碼,但仍然沒有效果。我認爲其他地方還有其他事情發生。也許設備設置的方式是錯誤的 – 2012-03-14 22:45:26

0

我最終只是切換到OpenGL的。但感謝你們的幫助:D

+1

對你有好處,現在你可以跨平臺了。 – awiebe 2012-04-08 16:34:46