diff options
author | Antti Määttä <antti.maatta@qt.io> | 2020-05-05 11:01:30 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2020-05-07 08:35:00 +0300 |
commit | fa819899abd4d405da782b34abde8a23cbc2da5a (patch) | |
tree | fc0f51b9300763414f7ff8128a5512c13b694bf6 /src/runtimerender/Qt3DSRenderContextCore.cpp | |
parent | fcfe2c787a6429323afe974ee8d9abcf8f2747ee (diff) |
Fix studio viewport rendering when scene camera is visible
The runtime contains unused viewport parameters. Remove those and fix the
editor by reading the scissor rect from render list instead of render
context, which contains wrong scissor rect.
Task-number: QT3DS-4103
Change-Id: I8b443c3a5e8d7ac84eb211633cea2afeed6da30b
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/runtimerender/Qt3DSRenderContextCore.cpp')
-rw-r--r-- | src/runtimerender/Qt3DSRenderContextCore.cpp | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/src/runtimerender/Qt3DSRenderContextCore.cpp b/src/runtimerender/Qt3DSRenderContextCore.cpp index d1d0fff..44f10c0 100644 --- a/src/runtimerender/Qt3DSRenderContextCore.cpp +++ b/src/runtimerender/Qt3DSRenderContextCore.cpp @@ -241,8 +241,7 @@ struct SRenderContext : public IQt3DSRenderContext NVScopedRefCounted<IRenderList> m_RenderList; QT3DSU32 m_FrameCount; volatile QT3DSI32 mRefCount; - // Viewport that this render context should use - Option<NVRenderRect> m_Viewport; + QSize m_WindowDimensions; ScaleModes::Enum m_ScaleMode; StereoModes::Enum m_StereoMode; @@ -501,9 +500,6 @@ struct SRenderContext : public IQt3DSRenderContext bool GetWireframeMode() override { return m_WireframeMode; } - void SetViewport(Option<NVRenderRect> inViewport) override { m_Viewport = inViewport; } - Option<NVRenderRect> GetViewport() const override { return m_Viewport; } - IRenderWidgetContext &GetRenderWidgetContext() override { return m_Renderer->GetRenderWidgetContext(); @@ -556,11 +552,7 @@ struct SRenderContext : public IQt3DSRenderContext NVRenderRect GetContextViewport() const override { NVRenderRect retval; - if (m_Viewport.hasValue()) - retval = *m_Viewport; - else - retval = NVRenderRect(0, 0, m_WindowDimensions.width(), m_WindowDimensions.height()); - + retval = NVRenderRect(0, 0, m_WindowDimensions.width(), m_WindowDimensions.height()); return retval; } @@ -697,12 +689,8 @@ struct SRenderContext : public IQt3DSRenderContext m_PerFrameAllocator.reset(); IRenderList &theRenderList(*m_RenderList); theRenderList.BeginFrame(); - if (m_Viewport.hasValue()) { - theRenderList.SetScissorTestEnabled(true); - theRenderList.SetScissorRect(theContextViewport); - } else { - theRenderList.SetScissorTestEnabled(false); - } + theRenderList.SetScissorRect(theContextViewport); + theRenderList.SetScissorTestEnabled(false); bool renderOffscreen = m_Rotation != RenderRotationValues::NoRotation; eastl::pair<NVRenderRect, NVRenderRect> thePresViewportAndOuterViewport = GetPresentationViewportAndOuterViewport(); @@ -782,11 +770,10 @@ struct SRenderContext : public IQt3DSRenderContext { bool stereoProgressiveEnabled = GetStereoProgressiveEnabled(); // Clearing for matte / scene background - if (m_Viewport.hasValue() || stereoProgressiveEnabled) { + if (stereoProgressiveEnabled) { // With progressive stereoscopic rendering needs to be adjusted to viewport NVRenderRect theContextViewport(GetContextViewport()); - if (stereoProgressiveEnabled) - adjustRectToStereoMode(theContextViewport); + adjustRectToStereoMode(theContextViewport); m_RenderContext->SetScissorTestEnabled(true); m_RenderContext->SetScissorRect(theContextViewport); } else { |