私は解決できなかった問題があるので、私はあなたの助けを求める。 私のシーンにテキストのページが含まれており、ハイライトロジックを追加しようとしているDirectX Appを開発しています。DirectXブレンド状態の問題
私はテキストをハイライトし、このハイライトの色と不透明度を変更したいと考えています。
そうするために、私はID3D11BlendStateを使用しようとしています。私はそれを作成する方法に小さなコードスニペットを考えてみてください:
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());
問題があり、 - それは、私はそれが仕事をしたい方法で動作しません。私はややそれを変更しようとした場合、
しかし - 黒に変わる前にした任意の色: は限りアルファが1に等しいとそれだけで正常に見えるこの出来事である理由 を私は本当に理解していないと私はあなたの指導を求める! ありがとうございます!
レンダリングされたテキストの上にプレーンカラーの矩形をレンダリングしていますか?または、矩形はテキストでテクスチャを使用しますか?すべてが黒くなったとき、あなたは何を変えましたか?前と後のどちらの値を使用しましたか? – Gnietschow
私はd3dを使用してハイライトをリールしています。私は、バッファ、シェーダなど に私はそれがブレンド状態が奇妙に見える0 1 0 1 、その後0 1 0 0.9 –
たハイライトカラー にアルファ値を変更を作成しています。これがあなたが望むものだと確信していますか?通常、ソースと宛先のブレンドには 'SRC_ALPHA'と' INV_SRC_ALPHA'を使います。 –