diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2020-05-13 11:35:12 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2020-05-14 17:02:51 +0200 |
commit | cfd8c4d06bc81028b055e6c3343d0d4b50793219 (patch) | |
tree | 7e18423314512a9179dc8f6a64e7203dfcbee385 /src | |
parent | 3c0b236a235d68de329609fc4643c3b3c4326849 (diff) |
Release rendertargets on destruction
We were only releasing them at runtime if they changed, but we should
also clean them up before we are destroyed.
Change-Id: Ibc3f37fba92e8be8381fd869af7f5747da87038a
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src')
3 files changed, 10 insertions, 0 deletions
diff --git a/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp b/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp index 5453dd98d..d57aebe6c 100644 --- a/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp +++ b/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp @@ -558,6 +558,13 @@ GLuint SubmissionContext::updateRenderTarget(Qt3DCore::QNodeId renderTargetNodeI return fboId; } +void SubmissionContext::releaseRenderTargets() +{ + const auto keys = m_renderTargets.keys(); + for (Qt3DCore::QNodeId renderTargetId : keys) + releaseRenderTarget(renderTargetId); +} + QSize SubmissionContext::renderTargetSize(const QSize &surfaceSize) const { QSize renderTargetSize; diff --git a/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h b/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h index 6f2888b93..ac8d29096 100644 --- a/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h +++ b/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h @@ -111,6 +111,7 @@ public: GLuint activeFBO() const { return m_activeFBO; } void activateRenderTarget(const Qt3DCore::QNodeId id, const AttachmentPack &attachments, GLuint defaultFboId); void releaseRenderTarget(const Qt3DCore::QNodeId id); + void releaseRenderTargets(); QSize renderTargetSize(const QSize &surfaceSize) const; QImage readFramebuffer(const QRect &rect); void blitFramebuffer(Qt3DCore::QNodeId outputRenderTargetId, Qt3DCore::QNodeId inputRenderTargetId, diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp index 47a7c5e01..162836ff1 100644 --- a/src/render/renderers/opengl/renderer/renderer.cpp +++ b/src/render/renderers/opengl/renderer/renderer.cpp @@ -534,6 +534,8 @@ void Renderer::releaseGraphicsResources() vao->destroy(); } + m_submissionContext->releaseRenderTargets(); + context->doneCurrent(); } else { qWarning() << "Failed to make context current: OpenGL resources will not be destroyed"; |