1
我試圖在Direct3D 11中實現深度緩衝區,但事實證明,這並不像打架那麼容易。這裏是我的問題:每當我調用這個函數:Direct3D 11深度緩衝區導致黑屏
m_DeviceContext->OMSetRenderTargets(1, &m_RTV, m_DepthStencilView);
隨着我的深入模板視圖中的第三個參數,我什麼也看不到我的窗口;一切都是黑色的。如果我放置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);
我搜索了很長一段時間來找到解決方案,但我沒有幫助我。我也檢查了視口,但它不起作用。我還清理每一幀的視圖。
你能幫我一下嗎?我會感激它:)謝謝。
通常情況下,默認的深度模板狀態應該少一些讀寫,這應該符合您的使用案例。也許嘗試啓用調試設備,看看你是否有任何運行時警告/錯誤 – catflier