summaryrefslogtreecommitdiffstats
path: root/src/render/jobs/calcboundingvolumejob.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2018-02-14 15:45:54 +0100
committerLaszlo Agocs <laszlo.agocs@qt.io>2018-02-15 08:56:12 +0000
commit0bbccd492532786adc6816b992b85b4fdf162842 (patch)
treeb6d8f2e0cdb12015975a7fe6a4d747e60843c410 /src/render/jobs/calcboundingvolumejob.cpp
parenta400bbe50deb98f5d924cd4f6562e1b868e73248 (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.cpp16
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();