Как я могу настроить прозрачность с DirectX 11? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь сделать прозрачный объект, например, цветное стекло или воду, и мне это удалось. но я не знаю, как настроить его прозрачность. Я пытаюсь сделать невозможное?

Сцена отображается с простым расчетом цвета и освещения. и не использовать наложение текстур в этой программе

Я пытался изменить desc состояния смешивания, коэффициент смешивания, образец маски

но я не уверен, что это было правильно.

Вот мой Blendstate desc

BlendStateDesc.AlphaToCoverageEnable = false;
BlendStateDesc.IndependentBlendEnable = false;
BlendStateDesc.RenderTarget[0].BlendEnable = true;
BlendStateDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_DEST_COLOR;
BlendStateDesc.RenderTarget[0].DestBlend = D3D11_BLEND_ZERO;
BlendStateDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
BlendStateDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
BlendStateDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
BlendStateDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
BlendStateDesc.RenderTarget[0].RenderTargetWriteMask 
=D3D11_COLOR_WRITE_ENABLE_ALL;

и настройка

float bf[] = { 0.f,0.f,0.f,0.f };

pDeviceContext->OMSetBlendState(m_pd3dBlendState, bf, 0xffffffff);

1 Ответ

0 голосов
/ 04 июля 2019

Я предполагаю, что это DX11, и часть, которую вы пропустили, фактически находится в вашем шейдере.

В вашем пиксельном шейдере вы будете возвращать float4 rgba. Значение «а» будет контролировать значения, применяемые к расчету. Это значение находится в диапазоне от 0 до 1. Если бы вы могли опубликовать свой код пиксельного шейдера, это помогло бы подтвердить / отклонить решение.

...