summaryrefslogtreecommitdiffstats
path: root/src/render/frontend
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-11-17 10:09:13 +0100
committerAndy Nichols <andy.nichols@theqtcompany.com>2015-11-24 15:02:21 +0000
commita06437ae2d9096b85377a6fb9076d05c18db157f (patch)
tree60abd732f9046c5f9bf86fe207a973795523539f /src/render/frontend
parentcf3771abcac373b8e4fbca3682a91d0195b7446d (diff)
QRenderAspect: use CalcGeometryTriangleVolumes
Change-Id: Ifedd202820c9420d166b3f5a75f5c5358207a8bc Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Diffstat (limited to 'src/render/frontend')
-rw-r--r--src/render/frontend/qrenderaspect.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp
index de826107c..bcfdddde5 100644
--- a/src/render/frontend/qrenderaspect.cpp
+++ b/src/render/frontend/qrenderaspect.cpp
@@ -102,6 +102,7 @@
#include <Qt3DRender/private/objectpicker_p.h>
#include <Qt3DRender/private/boundingvolumedebug_p.h>
#include <Qt3DRender/private/nodemanagers_p.h>
+#include <Qt3DRender/private/calcgeometrytrianglevolumes_p.h>
#include <Qt3DCore/qentity.h>
#include <Qt3DCore/qtransform.h>
@@ -291,8 +292,9 @@ QVector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time)
// 2 CalculateBoundingVolumeJob (depends on LoadBuffer)
// 3 WorldTransformJob
// 4 UpdateBoundingVolume, FramePreparationJob (depend on WorlTransformJob)
- // 5 PickBoundingVolume Job, RenderViewJobs
- // 6 Cleanup Job (depends on RV)
+ // 5 CalcGeometryTriangleVolumes (frame preparation job), RenderViewJobs
+ // 6 PickBoundingVolumeJob
+ // 7 Cleanup Job (depends on RV)
// Create jobs to load in any meshes that are pending
if (d->m_renderer != Q_NULLPTR && d->m_renderer->isRunning()) {
@@ -331,6 +333,17 @@ QVector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time)
const QVector<QAspectJobPtr> geometryJobs = d->m_renderer->createGeometryRendererJobs();
jobs.append(geometryJobs);
+ // Clear any previous dependency not valid anymore
+ d->m_pickBoundingVolumeJob->clearNullDependencies();
+
+ const QVector<QNodeId> geometryRendererTriangleUpdates = manager->geometryRendererManager()->geometryRenderersRequiringTriangleDataRefresh();
+ Q_FOREACH (const QNodeId geomRendererId, geometryRendererTriangleUpdates) {
+ Render::CalcGeometryTriangleVolumesPtr triangleComputeJob(new Render::CalcGeometryTriangleVolumes(geomRendererId, manager));
+ triangleComputeJob->addDependency(d->m_framePreparationJob);
+ d->m_pickBoundingVolumeJob->addDependency(triangleComputeJob);
+ jobs.append(triangleComputeJob);
+ }
+
// Add all jobs to queue
jobs.append(d->m_calculateBoundingVolumeJob);
jobs.append(d->m_worldTransformJob);