Результат буфера глубины Direct3D 11 на черном экране

Я пытался реализовать буфер глубины в Direct3D 11, но оказалось, что это не так просто, как я боролся. Вот моя проблема: всякий раз, когда я вызываю эту функцию:

m_DeviceContext->OMSetRenderTargets(1, &m_RTV, m_DepthStencilView);

С 3-м параметром в качестве моего представления глубины трафарета я ничего не вижу в своем окне; все черное. Если я добавлю nullptr, то все мои геометрии будут отображены без проверки глубины (как это было до того, как я попытался реализовать глубину). Вот как я создаю свой буфер глубины и мой шаблон глубины:

    D3D11_TEXTURE2D_DESC depthBufferDesc;
ZeroMemory(&depthBufferDesc, sizeof(D3D11_TEXTURE2D_DESC));
depthBufferDesc.Width = iwidth;
depthBufferDesc.Height = iheight;
depthBufferDesc.MipLevels = 1;
depthBufferDesc.ArraySize = 1;
depthBufferDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
depthBufferDesc.SampleDesc.Count = 1;
depthBufferDesc.SampleDesc.Quality = 0;
depthBufferDesc.Usage = D3D11_USAGE_DEFAULT;
depthBufferDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;

hr = m_Device->CreateTexture2D(&depthBufferDesc, nullptr, &m_DepthStencilBuffer);

hr = m_Device->CreateDepthStencilView(m_DepthStencilBuffer, nullptr, &m_DepthStencilView);

Я довольно долго искал решение, но мне не помогло. Я также проверил область просмотра, но она не работает. Я также очищаю вид каждого кадра.

Можете ли вы помочь мне, пожалуйста? Я ценю это 🙂 Спасибо.

1

Решение

Возможно, вы забыли очистить буфер глубины до 1.0, прежде чем пытаться его использовать.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector