如何在DirectX上启用alpha混合?

如何在DirectX上启用alpha混合?,directx,alphablending,blending,Directx,Alphablending,Blending,如何在DirectX中执行此操作 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); 不知何故,我似乎无法让它工作。即时通讯使用代码: d3ddev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR); d3ddev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR); d3ddev-&

如何在DirectX中执行此操作

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
不知何故,我似乎无法让它工作。即时通讯使用代码:

d3ddev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
d3ddev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
d3ddev->SetRenderState(D3DRS_ALPHABLENDENABLE, 1);
d3ddev->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
d3ddev->SetRenderState(D3DRS_ALPHAREF, (DWORD)50);
d3ddev->SetRenderState(D3DRS_ALPHATESTENABLE, 1);

但它会用某种重影方法渲染我的多边形,我可以看穿我所有的多边形!我只想用alpha通道制作纹理,通过那些完全透明的纹理片段来显示。这适用于alphatest,但它仍然显示黑色边缘,因此我猜混合功能未启用,即使我已将D3DRS_ALPHABLENDENABLE设置为可启用!我做错了什么?

我需要使用SRCALPHA而不是SRCCOLOR:

d3ddev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
d3ddev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);