diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-02-14 15:45:54 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-02-15 08:56:12 +0000 |
commit | 0bbccd492532786adc6816b992b85b4fdf162842 (patch) | |
tree | b6d8f2e0cdb12015975a7fe6a4d747e60843c410 /src/render/jobs/calcboundingvolumejob.cpp | |
parent | a400bbe50deb98f5d924cd4f6562e1b868e73248 (diff) |
Handle primitive restart in buffer visitor
Task-number: QTBUG-66407
Change-Id: Ic79851e94fcadee8f707cb2682938692db094aa7
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/jobs/calcboundingvolumejob.cpp')
-rw-r--r-- | src/render/jobs/calcboundingvolumejob.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/render/jobs/calcboundingvolumejob.cpp b/src/render/jobs/calcboundingvolumejob.cpp index 0a6e5dfca..021478396 100644 --- a/src/render/jobs/calcboundingvolumejob.cpp +++ b/src/render/jobs/calcboundingvolumejob.cpp @@ -81,10 +81,15 @@ public: const Sphere& result() { return m_volume; } - bool apply(Qt3DRender::Render::Attribute *positionAttribute, Qt3DRender::Render::Attribute *indexAttribute, int drawVertexCount) + bool apply(Qt3DRender::Render::Attribute *positionAttribute, + Qt3DRender::Render::Attribute *indexAttribute, + int drawVertexCount, + bool primitiveRestartEnabled, + int primitiveRestartIndex) { FindExtremePoints findExtremePoints(m_manager); - if (!findExtremePoints.apply(positionAttribute, indexAttribute, drawVertexCount)) + if (!findExtremePoints.apply(positionAttribute, indexAttribute, + drawVertexCount, primitiveRestartEnabled, primitiveRestartIndex)) return false; // Calculate squared distance for the pairs of points @@ -109,7 +114,8 @@ public: m_volume.setRadius((q - c).length()); ExpandSphere expandSphere(m_manager, m_volume); - if (!expandSphere.apply(positionAttribute, indexAttribute, drawVertexCount)) + if (!expandSphere.apply(positionAttribute, indexAttribute, + drawVertexCount, primitiveRestartEnabled, primitiveRestartIndex)) return false; return true; @@ -268,7 +274,9 @@ void calculateLocalBoundingVolume(NodeManagers *manager, Entity *node) (indexBuf && indexBuf->isDirty())) { BoundingVolumeCalculator reader(manager); - if (reader.apply(positionAttribute, indexAttribute, drawVertexCount)) { + if (reader.apply(positionAttribute, indexAttribute, + drawVertexCount, gRenderer->primitiveRestartEnabled(), gRenderer->restartIndexValue())) + { node->localBoundingVolume()->setCenter(reader.result().center()); node->localBoundingVolume()->setRadius(reader.result().radius()); node->unsetBoundingVolumeDirty(); |