diff options
author | Mike Krus <mike.krus@kdab.com> | 2017-02-19 15:55:24 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2017-02-22 07:09:04 +0000 |
commit | 63ea9813791d62c18e7a5c1a1ce03e1318f8203c (patch) | |
tree | e562fcccc0e90adeb55a00d71586cc1868c686ce | |
parent | 922078911d131358f91ec25b7366ff6ac5cb55a7 (diff) |
Rename CoordinateVisitor to BufferVisitor
Point picking will need a point/coordinate visitor
to traverse coordinate in order. BufferVisitor traverses
a single buffer irrespective of the draw order.
It reveals (another, pre-existing) problem with bounding
volume computations: it computes based on all the
values in a buffer. In the case of indexed primitives,
only a subset of those may be used and the bounding
volume may be very different. Will fix this for 5.10
using proper coordinate visitor
Change-Id: Ie86f26d7066260d69da9639eb1dab823c650333c
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
-rw-r--r-- | src/render/backend/buffervisitor_p.h (renamed from src/render/backend/coordinatevisitor_p.h) | 14 | ||||
-rw-r--r-- | src/render/backend/render-backend.pri | 2 | ||||
-rw-r--r-- | src/render/jobs/calcboundingvolumejob.cpp | 10 |
3 files changed, 13 insertions, 13 deletions
diff --git a/src/render/backend/coordinatevisitor_p.h b/src/render/backend/buffervisitor_p.h index e7687ab3a..7149e21ae 100644 --- a/src/render/backend/coordinatevisitor_p.h +++ b/src/render/backend/buffervisitor_p.h @@ -37,8 +37,8 @@ ** ****************************************************************************/ -#ifndef QT3DRENDER_RENDER_COORDINATEVISITOR_P_H -#define QT3DRENDER_RENDER_COORDINATEVISITOR_P_H +#ifndef QT3DRENDER_RENDER_BUFFERVISITOR_P_H +#define QT3DRENDER_RENDER_BUFFERVISITOR_P_H // // W A R N I N G @@ -73,14 +73,14 @@ namespace Render { template <typename ValueType, QAttribute::VertexBaseType VertexBaseType, uint dataSize> -class Q_AUTOTEST_EXPORT CoordinateVisitor +class Q_AUTOTEST_EXPORT BufferVisitor { public: - explicit CoordinateVisitor(NodeManagers *manager) + explicit BufferVisitor(NodeManagers *manager) : m_manager(manager) { } - virtual ~CoordinateVisitor() { } + virtual ~BufferVisitor() { } virtual void visit(uint ndx, ValueType x) { Q_UNUSED(ndx); Q_UNUSED(x); @@ -200,7 +200,7 @@ protected: NodeManagers *m_manager; }; -typedef CoordinateVisitor<float, QAttribute::Float, 3> Coordinate3fVisitor; +typedef BufferVisitor<float, QAttribute::Float, 3> Buffer3fVisitor; } // namespace Render @@ -209,4 +209,4 @@ typedef CoordinateVisitor<float, QAttribute::Float, 3> Coordinate3fVisitor; QT_END_NAMESPACE -#endif // QT3DRENDER_RENDER_COORDINATEVISITOR_P_H +#endif // QT3DRENDER_RENDER_BUFFERVISITOR_P_H diff --git a/src/render/backend/render-backend.pri b/src/render/backend/render-backend.pri index f694e7cea..14e9c6370 100644 --- a/src/render/backend/render-backend.pri +++ b/src/render/backend/render-backend.pri @@ -29,7 +29,7 @@ HEADERS += \ $$PWD/triangleboundingvolume_p.h \ $$PWD/openglvertexarrayobject_p.h \ $$PWD/trianglesextractor_p.h \ - $$PWD/coordinatevisitor_p.h \ + $$PWD/buffervisitor_p.h \ $$PWD/bufferutils_p.h \ $$PWD/trianglesvisitor_p.h \ $$PWD/abstractrenderer_p.h \ diff --git a/src/render/jobs/calcboundingvolumejob.cpp b/src/render/jobs/calcboundingvolumejob.cpp index 2f2d471d6..7bbab307c 100644 --- a/src/render/jobs/calcboundingvolumejob.cpp +++ b/src/render/jobs/calcboundingvolumejob.cpp @@ -50,7 +50,7 @@ #include <Qt3DRender/private/attribute_p.h> #include <Qt3DRender/private/buffer_p.h> #include <Qt3DRender/private/sphere_p.h> -#include <Qt3DRender/private/coordinatevisitor_p.h> +#include <Qt3DRender/private/buffervisitor_p.h> #include <QtCore/qmath.h> #include <QtConcurrent/QtConcurrent> @@ -119,11 +119,11 @@ private: Sphere m_volume; NodeManagers *m_manager; - class FindExtremePoints : public Coordinate3fVisitor + class FindExtremePoints : public Buffer3fVisitor { public: FindExtremePoints(NodeManagers *manager) - : Coordinate3fVisitor(manager) + : Buffer3fVisitor(manager) , xMin(0.0f), xMax(0.0f), yMin(0.0f), yMax(0.0f), zMin(0.0f), zMax(0.0f) { } @@ -166,11 +166,11 @@ private: } }; - class ExpandSphere : public Coordinate3fVisitor + class ExpandSphere : public Buffer3fVisitor { public: ExpandSphere(NodeManagers *manager, Sphere& volume) - : Coordinate3fVisitor(manager), m_volume(volume) + : Buffer3fVisitor(manager), m_volume(volume) { } Sphere& m_volume; |