summaryrefslogtreecommitdiffstats
path: root/src/render/renderers/opengl/graphicshelpers
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2020-02-13 11:51:38 +0100
committerPaul Lemire <paul.lemire@kdab.com>2020-02-13 15:59:51 +0100
commit294894610b02a2cd4682fafe139a60b2b96f3289 (patch)
tree70dc752d85d8b10df0f75be56c1fa2b5c12822c4 /src/render/renderers/opengl/graphicshelpers
parentd046e7cc3e362e6cb45afd5ecae464d796c21079 (diff)
Destroy FBOs when RenderTarget node is destroyed
It appears we never destroyed FBOs which lead to bugs when destroying and recreating a RenderTarget Change-Id: I99b3df95b821670aa3bbd63209ff9bcc21afbf79 Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/renderers/opengl/graphicshelpers')
-rw-r--r--src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp8
-rw-r--r--src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp b/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp
index 47779dded..b8229dd9e 100644
--- a/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp
+++ b/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp
@@ -506,6 +506,14 @@ void SubmissionContext::activateRenderTarget(Qt3DCore::QNodeId renderTargetNodeI
activateDrawBuffers(attachments);
}
+void SubmissionContext::releaseRenderTarget(const Qt3DCore::QNodeId id)
+{
+ if (m_renderTargets.contains(id)) {
+ const GLuint fboId = m_renderTargets.take(id);
+ m_glHelper->releaseFrameBufferObject(fboId);
+ }
+}
+
GLuint SubmissionContext::createRenderTarget(Qt3DCore::QNodeId renderTargetNodeId, const AttachmentPack &attachments)
{
const GLuint fboId = m_glHelper->createFrameBufferObject();
diff --git a/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h b/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h
index a8700dd3a..0f769fa1c 100644
--- a/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h
+++ b/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h
@@ -111,6 +111,7 @@ public:
// FBO
GLuint activeFBO() const { return m_activeFBO; }
void activateRenderTarget(const Qt3DCore::QNodeId id, const AttachmentPack &attachments, GLuint defaultFboId);
+ void releaseRenderTarget(const Qt3DCore::QNodeId id);
QSize renderTargetSize(const QSize &surfaceSize) const;
QImage readFramebuffer(const QRect &rect);
void blitFramebuffer(Qt3DCore::QNodeId outputRenderTargetId, Qt3DCore::QNodeId inputRenderTargetId,