From dc9e29601d57fbd0a067cae95bbd8a5d0d50c16c Mon Sep 17 00:00:00 2001 From: Matthew Endsley Date: Wed, 20 Aug 2014 15:55:30 -0700 Subject: [PATCH] Resolve active render target in D3D9 before switch On D3D9 platforms that work on active render target instead of a specified surface, the resovle of the previous RT must happen before the new RT becomes active. --- src/renderer_d3d9.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/renderer_d3d9.cpp b/src/renderer_d3d9.cpp index 10625c4af..a9f9687c8 100644 --- a/src/renderer_d3d9.cpp +++ b/src/renderer_d3d9.cpp @@ -939,6 +939,14 @@ namespace bgfx void setFrameBuffer(FrameBufferHandle _fbh, bool _msaa = true) { + if (isValid(m_fbh) + && m_fbh.idx != _fbh.idx + && m_rtMsaa) + { + FrameBufferD3D9& frameBuffer = m_frameBuffers[m_fbh.idx]; + frameBuffer.resolve(); + } + if (!isValid(_fbh) ) { DX_CHECK(m_device->SetRenderTarget(0, m_backBufferColor) ); @@ -970,14 +978,6 @@ namespace bgfx DX_CHECK(m_device->SetDepthStencilSurface(NULL != depthStencil ? depthStencil : m_backBufferDepthStencil) ); } - if (isValid(m_fbh) - && m_fbh.idx != _fbh.idx - && m_rtMsaa) - { - FrameBufferD3D9& frameBuffer = m_frameBuffers[m_fbh.idx]; - frameBuffer.resolve(); - } - m_fbh = _fbh; m_rtMsaa = _msaa; }