From 2810eac6b5ec8c422ddfb0f5b60da79cc32f35e6 Mon Sep 17 00:00:00 2001 From: Tim Barnes Date: Wed, 24 Oct 2018 18:42:08 +1000 Subject: [PATCH] d3d11 clear RTV fix --- Engine/source/gfx/D3D11/gfxD3D11Device.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Engine/source/gfx/D3D11/gfxD3D11Device.cpp b/Engine/source/gfx/D3D11/gfxD3D11Device.cpp index 5ecde9fb7..8a96ed125 100644 --- a/Engine/source/gfx/D3D11/gfxD3D11Device.cpp +++ b/Engine/source/gfx/D3D11/gfxD3D11Device.cpp @@ -940,15 +940,22 @@ void GFXD3D11Device::clear(U32 flags, const LinearColorF& color, F32 z, U32 sten UINT depthstencilFlag = 0; - ID3D11RenderTargetView* rtView = NULL; + //TODO: current support is 5 render targets, clean this up + ID3D11RenderTargetView* rtView[5] = { NULL }; ID3D11DepthStencilView* dsView = NULL; - mD3DDeviceContext->OMGetRenderTargets(1, &rtView, &dsView); + mD3DDeviceContext->OMGetRenderTargets(5, rtView, &dsView); const FLOAT clearColor[4] = { color.red, color.green, color.blue, color.alpha }; if (flags & GFXClearTarget && rtView) - mD3DDeviceContext->ClearRenderTargetView(rtView, clearColor); + { + for (U32 i = 0; i < 5; i++) + { + if(rtView[i]) + mD3DDeviceContext->ClearRenderTargetView(rtView[i], clearColor); + } + } if (flags & GFXClearZBuffer) depthstencilFlag |= D3D11_CLEAR_DEPTH; @@ -959,7 +966,9 @@ void GFXD3D11Device::clear(U32 flags, const LinearColorF& color, F32 z, U32 sten if (depthstencilFlag && dsView) mD3DDeviceContext->ClearDepthStencilView(dsView, depthstencilFlag, z, stencil); - SAFE_RELEASE(rtView); + for (U32 i = 0; i < 5; i++) + SAFE_RELEASE(rtView[i]); + SAFE_RELEASE(dsView); }