3

我在 OpenGL 中创建了一个运行良好的粒子系统。当我想要获得火焰或光束或其他东西的燃烧效果时(系统会“发光”并将所有颜色融合在一起),我使用 OpenGL 调用此方法。

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);

但这对我的游戏外观完全没有影响!任何人都知道可能是什么问题?

4

2 回答 2

0

尝试:

graphicsDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
graphicsDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
graphicsDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
于 2012-03-14T21:28:06.707 回答
0

我最终只是切换到 OpenGL。但是感谢您的帮助:D

于 2012-04-08T05:23:04.030 回答