diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-08-10 17:52:58 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-08-14 07:46:06 +0000 |
commit | 43d1f99ea4ea8aee825fabcdd7ec9fdad9a6539f (patch) | |
tree | 34b635798ecab3a9b0e9f007ecc10896ba189a9e /src/Authoring/Studio/Render/StudioRenderer.cpp | |
parent | 07d58b5fe318d1ab2341e7cd3b9802efdd338387 (diff) |
Fix preview view issues
Dragging was inaccurate when preview view was shown due to incorrect
translation being left after preview view was rendered. Changed the
preview view to render first to a texture, which is then draw on top
at the end of the regular view rendering pass.
The viewport for camera was also incorrect for preview view.
Task-number: QT3DS-2036
Change-Id: I3ed8f092c2a2a2f3806d5219ca8fb7718a8d4fe0
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Render/StudioRenderer.cpp')
-rw-r--r-- | src/Authoring/Studio/Render/StudioRenderer.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/Authoring/Studio/Render/StudioRenderer.cpp b/src/Authoring/Studio/Render/StudioRenderer.cpp index 4099022e..7c2eda44 100644 --- a/src/Authoring/Studio/Render/StudioRenderer.cpp +++ b/src/Authoring/Studio/Render/StudioRenderer.cpp @@ -397,22 +397,25 @@ struct SRendererImpl : public IStudioRenderer, m_RenderRequested = false; if (!m_Closed && IsInitialized()) { m_RenderContext->BeginRender(); - if (m_Translation) - m_Translation->PreRender(false); + bool preview = false; + if (m_Translation) { + preview = CStudioPreferences::showEditModePreview() + && m_Translation->m_EditCameraEnabled + && !m_Translation->GetPreviewViewportDimensions().isZero(); + m_Translation->PreRender(preview); + } NVRenderContext &theContext = m_RenderContext->GetRenderContext(); theContext.SetDepthWriteEnabled(true); theContext.Clear(qt3ds::render::NVRenderClearFlags( - qt3ds::render::NVRenderClearValues::Color | qt3ds::render::NVRenderClearValues::Depth)); + qt3ds::render::NVRenderClearValues::Color + | qt3ds::render::NVRenderClearValues::Depth)); if (m_Translation) { - m_Translation->Render(m_PickResult.GetWidgetId(), m_GuidesEnabled, false); - // draw scene preview view screen display area layer - if (CStudioPreferences::showEditModePreview() - && m_Translation->m_EditCameraEnabled - && !m_Translation->GetPreviewViewportDimensions().isZero()) { - m_Translation->PreRender(true); - m_Translation->Render(0, false, true); + if (preview) { + m_Translation->Render(0, false, true, false); + m_Translation->PreRender(false); } + m_Translation->Render(m_PickResult.GetWidgetId(), m_GuidesEnabled, false, preview); } m_RenderContext->EndRender(); |