diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-11-17 10:09:13 +0100 |
---|---|---|
committer | Andy Nichols <andy.nichols@theqtcompany.com> | 2015-11-24 15:02:21 +0000 |
commit | a06437ae2d9096b85377a6fb9076d05c18db157f (patch) | |
tree | 60abd732f9046c5f9bf86fe207a973795523539f /src/render/frontend | |
parent | cf3771abcac373b8e4fbca3682a91d0195b7446d (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.cpp | 17 |
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); |