如何使用 DirectX 11 调整透明度?

How can I adjust the transparency with DirectX 11?

我正在尝试制作透明物体,如彩色玻璃或水,我成功制作了它。 但我不知道如何调整它的透明度。我是在尝试做不可能的事情吗?

通过简单的颜色和光照计算渲染场景。 并且不在此程序中使用纹理映射

我尝试更改混合状态描述、混合因子、样本掩码

但我不确定它是否正确。

这是我的 Blendstate desc

BlendStateDesc.AlphaToCoverageEnable = false;
BlendStateDesc.IndependentBlendEnable = false;
BlendStateDesc.RenderTarget[0].BlendEnable = true;
BlendStateDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_DEST_COLOR;
BlendStateDesc.RenderTarget[0].DestBlend = D3D11_BLEND_ZERO;
BlendStateDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
BlendStateDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
BlendStateDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
BlendStateDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
BlendStateDesc.RenderTarget[0].RenderTargetWriteMask 
=D3D11_COLOR_WRITE_ENABLE_ALL;

和设置

float bf[] = { 0.f,0.f,0.f,0.f };

pDeviceContext->OMSetBlendState(m_pd3dBlendState, bf, 0xffffffff);

我假设这是 DX11 并且您缺少的部分实际上在您的着色器中。

在您的像素着色器中,您将返回一个 float4 rgba。 "a" 值将控制应用于计算的值。该值介于 0 和 1 之间。如果您可以 post 您的像素着色器代码,那将有助于 confirm/deny 解决方案。