From e51eb55f7dc45b4ae86caba5a439d127bd43cca3 Mon Sep 17 00:00:00 2001 From: Thomas Tissot Date: Thu, 28 May 2020 12:23:08 +0200 Subject: Fixed ImGUI framebuffer scale --- Imgui/src/ImGuiImplDiligent.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'Imgui/src/ImGuiImplDiligent.cpp') diff --git a/Imgui/src/ImGuiImplDiligent.cpp b/Imgui/src/ImGuiImplDiligent.cpp index 1db7de5..3968b1d 100644 --- a/Imgui/src/ImGuiImplDiligent.cpp +++ b/Imgui/src/ImGuiImplDiligent.cpp @@ -533,12 +533,15 @@ void ImGuiImplDiligent_Internal::RenderDrawData(IDeviceContext* pCtx, ImDrawData pCtx->SetBlendFactors(blend_factor); Viewport vp; - vp.Width = static_cast(m_RenderSurfaceWidth); - vp.Height = static_cast(m_RenderSurfaceHeight); + vp.Width = static_cast(m_RenderSurfaceWidth) * pDrawData->FramebufferScale.x; + vp.Height = static_cast(m_RenderSurfaceHeight) * pDrawData->FramebufferScale.y; vp.MinDepth = 0.0f; vp.MaxDepth = 1.0f; vp.TopLeftX = vp.TopLeftY = 0; - pCtx->SetViewports(1, &vp, m_RenderSurfaceWidth, m_RenderSurfaceHeight); + pCtx->SetViewports(1, + &vp, + static_cast(m_RenderSurfaceWidth * pDrawData->FramebufferScale.x), + static_cast(m_RenderSurfaceHeight * pDrawData->FramebufferScale.y)); }; SetupRenderState(); @@ -568,10 +571,10 @@ void ImGuiImplDiligent_Internal::RenderDrawData(IDeviceContext* pCtx, ImDrawData // Apply scissor/clipping rectangle float4 ClipRect // { - pcmd->ClipRect.x - pDrawData->DisplayPos.x, - pcmd->ClipRect.y - pDrawData->DisplayPos.y, - pcmd->ClipRect.z - pDrawData->DisplayPos.x, - pcmd->ClipRect.w - pDrawData->DisplayPos.y // + (pcmd->ClipRect.x - pDrawData->DisplayPos.x) * pDrawData->FramebufferScale.x, + (pcmd->ClipRect.y - pDrawData->DisplayPos.y) * pDrawData->FramebufferScale.y, + (pcmd->ClipRect.z - pDrawData->DisplayPos.x) * pDrawData->FramebufferScale.x, + (pcmd->ClipRect.w - pDrawData->DisplayPos.y) * pDrawData->FramebufferScale.y // }; // Apply pretransform ClipRect = TransformClipRect(pDrawData->DisplaySize, ClipRect); @@ -583,7 +586,10 @@ void ImGuiImplDiligent_Internal::RenderDrawData(IDeviceContext* pCtx, ImDrawData static_cast(ClipRect.z), static_cast(ClipRect.w) // }; - pCtx->SetScissorRects(1, &r, m_RenderSurfaceWidth, m_RenderSurfaceHeight); + pCtx->SetScissorRects(1, + &r, + static_cast(m_RenderSurfaceWidth * pDrawData->FramebufferScale.x), + static_cast(m_RenderSurfaceHeight * pDrawData->FramebufferScale.y)); // Bind texture, Draw auto* texture_srv = reinterpret_cast(pcmd->TextureId); -- cgit v1.2.3