c++ - DirectX 等效于 glBlendFunc(…………)

标签 c++ opengl directx-9 direct3d9 particle-system

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

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

最佳答案

尝试:

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

关于c++ - DirectX 等效于 glBlendFunc(…………),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9710103/

相关文章:

C++ 多态加载/保存

opengl - Scaleform GFx 与 OpenGL 集成

c++ - 字符数组末尾的额外字符 (char *Result = new char) 8OI

c++ - 需要确定一个矩阵来对齐两个三角形

c++ - 如何在 DirectX 9 中创建立方体贴图

c++ - 有没有更好的方法来解决这个问题 - Programming Principles & Practices Using C++ : Ch. 4 - Drill?

c++ - OpenGL - 重新绑定(bind)一个已经绑定(bind)的纹理

C++ std::mem_fn 和 std::bind 反过来

c++ - OpenGL - 具有多个纹理的蒙版

opengl - 如何在 GLSL 中渲染无限的 2D 网格?