diff --git a/src/render/qssgrendercontext.cpp b/src/render/qssgrendercontext.cpp index 7377040df1e931e5ab807f0518dc328610e2ff96..eda5f5206354db5b2b76412a6827cb653cc26193 100644 --- a/src/render/qssgrendercontext.cpp +++ b/src/render/qssgrendercontext.cpp @@ -318,6 +318,16 @@ void QSSGRenderContext::setBlendEquation(QSSGRenderBlendEquationArgument inEquat m_backend->setBlendEquation(inEquations); } +void QSSGRenderContext::resetBlendEquation(bool forceSet) +{ + const QSSGRenderBlendEquationArgument defaultBlendEqua; + if (!forceSet && m_hardwarePropertyContext.m_blendEquation == defaultBlendEqua) + return; + + m_hardwarePropertyContext.m_blendEquation = defaultBlendEqua; + m_backend->setBlendEquation(defaultBlendEqua); +} + void QSSGRenderContext::setCullingEnabled(bool inEnabled, bool forceSet) { if (!forceSet && m_hardwarePropertyContext.m_cullingEnabled == inEnabled) @@ -669,6 +679,9 @@ bool QSSGRenderContext::applyPreDrawProperties() void QSSGRenderContext::onPostDraw() { + // Reset to default blend equation if needed + resetBlendEquation(); + // reset input assembler binding m_backend->setInputAssembler(nullptr, nullptr); // Texture unit 0 is used for setting up and loading textures. diff --git a/src/render/qssgrendercontext_p.h b/src/render/qssgrendercontext_p.h index 5701d4b104f751ddb4ce27b14a2af0e50df99ff3..1dfb2c92a0e150aeccaad3acc08dfe29f41c23a6 100644 --- a/src/render/qssgrendercontext_p.h +++ b/src/render/qssgrendercontext_p.h @@ -343,6 +343,7 @@ public: { return m_hardwarePropertyContext.m_blendEquation; } + void resetBlendEquation(bool forceSet = false); void setCullingEnabled(bool inEnabled, bool forceSet = false); bool isCullingEnabled() const { return m_hardwarePropertyContext.m_cullingEnabled; }