在将 directX11 中的文本渲染到其他对象上时,我得到了一些奇怪的结果。每个字符都变成黑色背景(我的清除颜色)。如果文本直接呈现到背景,一切都很好。我使用 imgui lib 进行渲染。我认为这是由错误的混合设置引起的 - 这些是我的设置:
D3D11_BLEND_DESC desc;
desc.AlphaToCoverageEnable = false;
desc.IndependentBlendEnable = false;
desc.RenderTarget[0].BlendEnable = false;
desc.RenderTarget[0].SrcBlend = D3D11_BLEND_ONE;
desc.RenderTarget[0].DestBlend = D3D11_BLEND_ZERO;
desc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
desc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
desc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
desc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
这是显示问题的图像:
更新#1:
这是我用来绘制字符串的方法:https ://github.com/ocornut/imgui/blob/9cff4d6e5e76dd18d9c4ee7a1560563da2059a44/imgui_draw.cpp#L2937
我的clearcolor是:
ImVec4 clearColor = ImVec4(0.f, 0.f, 0.f, 0.f);
使用 ErnieDingo 的设置,我得到了这个结果: 积极的部分:每个角色周围的框都消失了。不好的部分:文本非常模糊/不清晰,特别是如果文本在深色背景/无背景上呈现。
更新#2:这张图片似乎简明扼要地显示了这个问题:正方形的重叠部分应该是黄色的,而不是像顶部那样的绿色。第一个图像还显示,仅考虑了字体的透明背景,这导致了每个字母后面的奇怪条。