内容简介:翻译自:https://stackoverflow.com/questions/11813698/directx-11-alpha-blending-not-working
好的,所以我一直试图让Alpha Blending在我的3D应用程序中运行,但它不希望发生.我在渲染循环的最后绘制了具有正交投影的2D图像(深度测试保持启用)并且图像纹理具有透明部分但是它们呈现黑色.
这是我的混合代码:
D3D11_BLEND_DESC blendStateDesc;
ZeroMemory(&blendStateDesc, sizeof(D3D11_BLEND_DESC));
blendStateDesc.AlphaToCoverageEnable = FALSE;
blendStateDesc.IndependentBlendEnable = FALSE;
blendStateDesc.RenderTarget[0].BlendEnable = TRUE;
blendStateDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
blendStateDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
blendStateDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
blendStateDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_SRC_ALPHA;
blendStateDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_DEST_ALPHA;
blendStateDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
blendStateDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
if (FAILED(device->CreateBlendState(&blendStateDesc, &blendState))) {
printf("Failed To Create Blend State\n");
}
deviceContext->OMSetBlendState(blendState, NULL, 0xFFFFFF);
如果它有帮助,这里是纹理描述:
D3D11_TEXTURE2D_DESC texDesc; texDesc.Width = TextureWidth; texDesc.Height = textureHeight; texDesc.MipLevels = 1; texDesc.ArraySize = 1; texDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; texDesc.SampleDesc.Count = 1; texDesc.SampleDesc.Quality = 0; texDesc.Usage = D3D11_USAGE_IMMUTABLE; texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; texDesc.CPUAccessFlags = 0; texDesc.MiscFlags = 0;
我只使用单个渲染目标,而不是在着色器内预先乘以alpha.我到处寻找并尝试了D3D11_BLEND_STATE的各种不同组合,但没有任何效果.
我能得到的最接近的是当我将AlphaToCoverage设置为TRUE但是如果我改变顶点的alpha值它就不起作用,而且我知道我正在做什么AlphaToCoverage应该是FALSE.
我要做的是确保在绘制之前设置/启用混合状态,然后在透明的2d图像的绘制调用后禁用.可以找到更多信息: DirectX Image texture quad displays underlying controls color where it is transparent
翻译自:https://stackoverflow.com/questions/11813698/directx-11-alpha-blending-not-working
以上所述就是小编给大家介绍的《alphablending – DirectX 11 Alpha混合不起作用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 图解词法作用域与作用域链
- javascript作用域之块级作用域
- javascript静态作用域和动态作用域
- JavaScript系列之作用域和作用域链
- 【7】JavaScript 函数高级——作用域与作用域链
- 深入学习js之——词法作用域和动态作用域
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Effective JavaScript
David Herman / Addison-Wesley Professional / 2012-12-6 / USD 39.99
"It's uncommon to have a programming language wonk who can speak in such comfortable and friendly language as David does. His walk through the syntax and semantics of JavaScript is both charming and h......一起来看看 《Effective JavaScript》 这本书的介绍吧!