Ich habe ein Problem, das ich nicht lösen konnte, also suche ich deine Hilfe. Ich entwickle eine DirectX-App, in der meine Szene eine Seite mit Text enthält und ich versuche, High-Light-Logik hinzuzufügen.DirectX Blending State Problem
Also ich möchte in der Lage sein, einen Text hervorzuheben und auch die Farbe \ Opazität dieser Hervorhebung zu ändern.
Um dies zu tun, versuche ich ID3D11BlendState zu verwenden. Bitte beachten Sie einen kleinen Code-Schnipsel auf, wie ich es schaffen:
HRESULT hr = S_OK;
D3D11_BLEND_DESC blendDesc;
D3D11_RENDER_TARGET_BLEND_DESC rtBlend;
Microsoft::WRL::ComPtr<ID3D11BlendState> state;
auto d3dDev = this->dxDevMt.GetD3DDevice();
rtBlend.BlendEnable = TRUE;
rtBlend.SrcBlend = D3D11_BLEND_DEST_COLOR;
rtBlend.DestBlend = D3D11_BLEND_ZERO;
rtBlend.BlendOp = D3D11_BLEND_OP_ADD;
rtBlend.SrcBlendAlpha = D3D11_BLEND_ONE;
rtBlend.DestBlendAlpha = D3D11_BLEND_ZERO;
rtBlend.BlendOpAlpha = D3D11_BLEND_OP_ADD;
rtBlend.RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
blendDesc.AlphaToCoverageEnable = FALSE;
blendDesc.IndependentBlendEnable = FALSE;
for (auto &i : blendDesc.RenderTarget) {
i = rtBlend;
}
hr = d3dDev->CreateBlendState(&blendDesc, state.GetAddressOf());
Das Problem ist, - es ist nicht in einer Art und Weise arbeitet ich es arbeiten wollen. Solange Alpha gleich 1 sieht es ganz gut:
Aber wenn ich versuche, es etwas zu verändern, - jede Farbe, die vor Veränderungen in schwarz war: Ich verstehe nicht wirklich, warum ist das passiert und Ich bitte um deine Führung! Vielen Dank im Voraus!
Rendern Sie ein einfarbiges Rechteck über zuvor gerenderten Text? Oder verwendet das Rechteck eine Textur mit dem Text? Was genau hast du verändert, als alles schwarz wurde? Welche Werte haben Sie vorher und nachher verwendet? – Gnietschow
Ich redere Highlight mit d3d. Ich erstelle Puffer, Shader und so weiter Ich ändere Alpha-Werte auf Highlight Farbe so war es 0 1 0 1 dann 0 1 0 0,9 –
Dieser Mischzustand sieht seltsam aus. Bist du sicher, dass du das willst? Normalerweise verwenden Sie 'SRC_ALPHA' und' INV_SRC_ALPHA' für die Quell- und Zielmischung. –