diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-11-06 11:33:54 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-11-16 11:17:44 +0000 |
commit | 2a434eb4431341d223bed40e75ef5f144446fda4 (patch) | |
tree | 6a49a74585082d94a8806d1f0a00b1479f7d7e1c | |
parent | 680eeef20c993227a880efc0212414154d047b13 (diff) |
CalcBoundingVolume: don't go through the BBox intermediate step
Change-Id: I9a929e776151f81b91fbbaf6631938fca03c7e1f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r-- | src/render/jobs/calcboundingvolumejob.cpp | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/src/render/jobs/calcboundingvolumejob.cpp b/src/render/jobs/calcboundingvolumejob.cpp index f6d9be118..ca91ac547 100644 --- a/src/render/jobs/calcboundingvolumejob.cpp +++ b/src/render/jobs/calcboundingvolumejob.cpp @@ -100,16 +100,12 @@ void calculateLocalBoundingVolume(Renderer *renderer, Entity *node) return; } - Qt3DCore::QAxisAlignedBoundingBox bbox; const QByteArray buffer = buf->data(); const char *rawBuffer = buffer.constData(); rawBuffer += pickVolumeAttribute->byteOffset(); const int stride = pickVolumeAttribute->byteStride() ? pickVolumeAttribute->byteStride() : sizeof(float) * pickVolumeAttribute->dataSize(); QVector<QVector3D> vertices(pickVolumeAttribute->count()); - // TO DO: We don't need to create a vector of QVector3D - // to build bbox used to then build a sphere, we could build the sphere - // by just looking at the vertices using more efficient algorithms (EPOS, Ritters) for (int c = 0, vC = vertices.size(); c < vC; ++c) { QVector3D v; const float *fptr = reinterpret_cast<const float*>(rawBuffer); @@ -118,12 +114,8 @@ void calculateLocalBoundingVolume(Renderer *renderer, Entity *node) vertices[c] = v; rawBuffer += stride; } - //Phase 1 - bbox.update(vertices); - //Phase 2 - node->localBoundingVolume()->setCenter(bbox.center()); - node->localBoundingVolume()->setRadius(bbox.maxExtent() * 0.5f); + node->localBoundingVolume()->initializeFromPoints(vertices); } } } |