diff options
Diffstat (limited to 'src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp')
-rw-r--r-- | src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp index 362a602..43934b1 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp +++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp @@ -1490,8 +1490,15 @@ namespace render { theRenderContext, &NVRenderContext::GetViewport, &NVRenderContext::SetViewport, theNewViewport); QT3DSVec4 clearColor(0.0f); - if (m_Layer.m_Background == LayerBackground::Color) + if (m_Layer.m_Background == LayerBackground::Color) { clearColor = m_Layer.m_ClearColor; + // Framebuffer holds premultiplied colors so the clearcolor must be premultiplied + if (clearColor.w < 1.0f) { + clearColor.x *= clearColor.w; + clearColor.y *= clearColor.w; + clearColor.z *= clearColor.w; + } + } NVRenderContextScopedProperty<QT3DSVec4> __clearColor( theRenderContext, &NVRenderContext::GetClearColor, &NVRenderContext::SetClearColor, @@ -1776,9 +1783,16 @@ namespace render { theContext.SetScissorRect( m_LayerPrepResult->GetLayerToPresentationScissorRect().ToIntegerRect()); if (m_Layer.m_Background == LayerBackground::Color) { + QT3DSVec4 clearColor = m_Layer.m_ClearColor; + // Framebuffer holds premultiplied colors so the clearcolor must be premultiplied + if (clearColor.w < 1.0f) { + clearColor.x *= clearColor.w; + clearColor.y *= clearColor.w; + clearColor.z *= clearColor.w; + } NVRenderContextScopedProperty<QT3DSVec4> __clearColor( theContext, &NVRenderContext::GetClearColor, &NVRenderContext::SetClearColor, - m_Layer.m_ClearColor); + clearColor); theContext.Clear(NVRenderClearValues::Color); } RenderToViewport(); |