У меня проблема, которую я не смог решить, поэтому я обращаюсь к вам за помощью. Я разрабатываю приложение DirectX, в котором на моей сцене есть страница с текстом на ней, и я пытаюсь добавить логику подсчета.DirectX Blending State issue
Так что я хочу, чтобы выделить текст, а также изменить цвет подсветки подсветки.
Для этого я пытаюсь использовать 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' для смеси источника и назначения. –