summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-01-03 09:22:18 +0100
committerMike Krus <mike.krus@kdab.com>2019-01-07 08:26:30 +0000
commit9d61881e4bcaebd6f98e647163f1df6b5082a6a8 (patch)
treea83577522e21233eb72b4de520e506892b498802
parentb7b77586301ef5cf6d168e2c890ef35a09068b76 (diff)
Recompute bounding volumes when buffer changes
Right now the bounding volumes would be computed only when a geometry is marked dirty, which essentially means only when the geometry is first loaded. However, if a geometry buffer were to change, we need to recompute the bounding volume. Change-Id: Ie3fb83d1cc11a3bbfbe2b9828e9f8d7c302d175b Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--src/render/renderers/opengl/renderer/renderer.cpp3
-rw-r--r--tests/auto/render/renderer/tst_renderer.cpp2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp
index a1781d1b0..7ed766f8b 100644
--- a/src/render/renderers/opengl/renderer/renderer.cpp
+++ b/src/render/renderers/opengl/renderer/renderer.cpp
@@ -1679,7 +1679,8 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs()
renderBinJobs.push_back(m_updateShaderDataTransformJob);
}
- if (dirtyBitsForFrame & AbstractRenderer::GeometryDirty) {
+ if (dirtyBitsForFrame & AbstractRenderer::GeometryDirty ||
+ dirtyBitsForFrame & AbstractRenderer::BuffersDirty) {
renderBinJobs.push_back(m_calculateBoundingVolumeJob);
renderBinJobs.push_back(m_updateMeshTriangleListJob);
}
diff --git a/tests/auto/render/renderer/tst_renderer.cpp b/tests/auto/render/renderer/tst_renderer.cpp
index 9f6007181..98bf6cc07 100644
--- a/tests/auto/render/renderer/tst_renderer.cpp
+++ b/tests/auto/render/renderer/tst_renderer.cpp
@@ -171,6 +171,8 @@ private Q_SLOTS:
1 + // sendBufferCaptureJob
1 + // VAOGatherer
1 + // updateSkinningPaletteJob
+ 1 + // CalculateBoundingVolumeJob
+ 1 + // UpdateMeshTriangleListJob
1); // BufferGathererJob
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);