我想要什么混合模式,以使两个0.2 alpha累加一个像素上的0.4 alpha?

问题描述 投票:0回答:1

相当基本:如果我在Alpha中用0.2f绘制两个多边形(线条看起来很三角形,但它们是三角形的三角形),我希望它们重叠的地方更亮。

目前,无论我尝试过哪种混合操作,结果都有所不同,但我无法做到这一点。我已经确认它们都使用0.2f绘制,我只是希望它们重叠的地方会变得“更亮”]

我以为这两个人应该做类似的事情,但无济于事。我知道blendstate受到尊重(如果更改操作会产生不同的结果),但是我错过了其他设置或此处的src / dst / ops错误。

const static struct D3D11_RENDER_TARGET_BLEND_DESC BlendAlpha =
{
    /* BlendEnable              */ TRUE,
    /* SrcBlend                 */ D3D11_BLEND_SRC_ALPHA,
    /* DestBlend                */ D3D11_BLEND_INV_SRC_ALPHA,
    /* BlendOp                  */ D3D11_BLEND_OP_ADD,
    /* SrcBlendAlpha            */ D3D11_BLEND_ONE,
    /* DestBlendAlpha           */ D3D11_BLEND_ONE,
    /* BlendOpAlpha             */ D3D11_BLEND_OP_ADD,
    /* RenderTargetWriteMask    */ D3D11_COLOR_WRITE_ENABLE_ALL
};

const static struct D3D11_RENDER_TARGET_BLEND_DESC BlendAlphaAdditive =
{
    /* BlendEnable              */ TRUE,
    /* SrcBlend                 */ D3D11_BLEND_SRC_ALPHA,
    /* DestBlend                */ D3D11_BLEND_ONE,
    /* BlendOp                  */ D3D11_BLEND_OP_ADD,
    /* SrcBlendAlpha            */ D3D11_BLEND_ONE,
    /* DestBlendAlpha           */ D3D11_BLEND_ONE,
    /* BlendOpAlpha             */ D3D11_BLEND_OP_ADD,
    /* RenderTargetWriteMask    */ D3D11_COLOR_WRITE_ENABLE_ALL
};

但是结果不是我想要的:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9lYThqYi5qcGcifQ==” alt =“在此处输入图像描述”>

shader direct3d hlsl alphablending blending
1个回答
1
投票

结果是深度模板阻止了顶部像素均匀绘制到后缓冲区;一旦禁用深度模具,我就可以继续操作。

© www.soinside.com 2019 - 2024. All rights reserved.