From 6a910a31cfe18cb3d236ea2065e2f6b8dc75c636 Mon Sep 17 00:00:00 2001 From: Patoke Date: Tue, 3 Mar 2026 03:18:07 -0300 Subject: [PATCH] fix: revert matching code for the creation of the depthStencil and renderTargetViews --- Windows_Libs/Dev/Render/RendererCore.cpp | 66 ++++++++++++++++-------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/Windows_Libs/Dev/Render/RendererCore.cpp b/Windows_Libs/Dev/Render/RendererCore.cpp index b50af4b..c352d37 100644 --- a/Windows_Libs/Dev/Render/RendererCore.cpp +++ b/Windows_Libs/Dev/Render/RendererCore.cpp @@ -418,35 +418,59 @@ void Renderer::Initialise(ID3D11Device *pDevice, IDXGISwapChain *pSwapChain) const float clearColour[4] = {0.0f, 0.0f, 0.0f, 0.0f}; SetClearColour(clearColour); - m_pDeviceContext->OMGetRenderTargets(1, &this->renderTargetView, &this->depthStencilView); + UINT backBufferSampleCount = 1; + UINT backBufferSampleQuality = 0; - D3D11_RENDER_TARGET_VIEW_DESC rtvDesc = {}; - rtvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; - rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; + ID3D11Texture2D *backBuffer = NULL; + pSwapChain->GetBuffer(0, IID_PPV_ARGS(&backBuffer)); + if (backBuffer) + { + D3D11_TEXTURE2D_DESC backDesc = {}; + backBuffer->GetDesc(&backDesc); + backBufferWidth = backDesc.Width; + backBufferHeight = backDesc.Height; + backBufferSampleCount = backDesc.SampleDesc.Count; + backBufferSampleQuality = backDesc.SampleDesc.Quality; - D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc = {}; - srvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; - srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; - srvDesc.Texture2D.MipLevels = 1; - srvDesc.Texture2D.MostDetailedMip = 0; + m_pDevice->CreateRenderTargetView(backBuffer, NULL, &renderTargetView); - ID3D11Resource *pBackBufferResource = nullptr; - this->renderTargetView->GetResource(&pBackBufferResource); + D3D11_TEXTURE2D_DESC srvDesc = backDesc; + srvDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE; + srvDesc.MiscFlags = 0; - ID3D11Texture2D *pBackBufferTexture = nullptr; - pBackBufferResource->QueryInterface(__uuidof(ID3D11Texture2D), (void **)&pBackBufferTexture); + ID3D11Texture2D *srvTexture = NULL; + m_pDevice->CreateTexture2D(&srvDesc, NULL, &srvTexture); + m_pDevice->CreateShaderResourceView(srvTexture, NULL, &renderTargetShaderResourceView); - D3D11_TEXTURE2D_DESC texDesc; - pBackBufferTexture->GetDesc(&texDesc); + srvTexture->Release(); + backBuffer->Release(); + } - this->backBufferWidth = texDesc.Width; - this->backBufferHeight = texDesc.Height; - this->renderTargetTextures[0] = pBackBufferTexture; + ID3D11RenderTargetView *boundRTV = NULL; + m_pDeviceContext->OMGetRenderTargets(1, &boundRTV, &depthStencilView); + if (boundRTV) + boundRTV->Release(); - pDevice->CreateRenderTargetView(pBackBufferTexture, &rtvDesc, &this->renderTargetView); - pDevice->CreateShaderResourceView(pBackBufferTexture, &srvDesc, &this->renderTargetShaderResourceView); + if (!depthStencilView && backBufferWidth != 0 && backBufferHeight != 0) + { + D3D11_TEXTURE2D_DESC depthDesc = {}; + depthDesc.Width = backBufferWidth; + depthDesc.Height = backBufferHeight; + depthDesc.MipLevels = 1; + depthDesc.ArraySize = 1; + depthDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; + depthDesc.SampleDesc.Count = backBufferSampleCount; + depthDesc.SampleDesc.Quality = backBufferSampleQuality; + depthDesc.Usage = D3D11_USAGE_DEFAULT; + depthDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; - pBackBufferResource->Release(); + ID3D11Texture2D *depthTexture = NULL; + if (SUCCEEDED(m_pDevice->CreateTexture2D(&depthDesc, NULL, &depthTexture))) + { + m_pDevice->CreateDepthStencilView(depthTexture, NULL, &depthStencilView); + depthTexture->Release(); + } + } D3D11_TEXTURE2D_DESC desc = {}; desc.MipLevels = 1;