gpt4 book ai didi

directx - 如何在 DirectX 上启用 Alpha 混合?

转载 作者:行者123 更新时间:2023-12-02 12:29:48 27 4
gpt4 key购买 nike

如何在 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 channel 制作纹理,以通过那些完全透明的纹理片段显示出来。这适用于 alphatest,但它仍然显示黑色边缘,所以我猜混合没有启用,即使我已经设置了 D3DRS_ALPHABLENDENABLE !我做错了什么?

最佳答案

我需要使用 SRCALPHA 而不是 SRCCOLOR:

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

关于directx - 如何在 DirectX 上启用 Alpha 混合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com