我正在尝试实现一个简单的效果:在具有透明背景的屏幕上绘制图像。我正在使用SpriteBatches来做到这一点。

这是我用于创建混合状态的代码:

D3D11_BLEND_DESC descBlend;
ZeroMemory(&descBlend, sizeof(descBlend));
descBlend.RenderTarget[0].BlendEnable = true;
descBlend.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
descBlend.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
descBlend.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
descBlend.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_INV_SRC_ALPHA;
descBlend.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
descBlend.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;

m_d3dDevice->CreateBlendState(&descBlend, &m_Blend);


我开始用以下方式绘制精灵:

m_SpriteBatch->Begin(SpriteSortMode_BackToFront, m_Blend);


屏幕上什么都没有显示!我想念什么吗?

我确定我的图像是正确的,因为在未启用任何混合的情况下进行绘制时,除了透明部分变为纯白色之外,所有内容都会显示出来。

任何帮助,将不胜感激。

最佳答案

我曾经试图实现类似的目标,并写下了我在gamedev所做的事情

关于c++ - 与Direct3D SpriteBatch混合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14890600/

10-10 20:01