diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-08-06 14:36:42 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-08-07 19:42:30 +0000 |
commit | ac359858c6dc71cd1f09fb4fb6ff11c945190cb5 (patch) | |
tree | ec3cb7144b4289ec3601d208c8c4e06e96b39cda | |
parent | ff868c5430891d166dc2098641f9d1e48246fced (diff) |
RenderMesh removed, replaced by RenderGeometryRenderer
Change-Id: If049768730a0f3aad3ea2b4f5cda2808f4035726
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r-- | src/render/backend/handle_types_p.h | 2 | ||||
-rw-r--r-- | src/render/backend/jobs/framepreparationjob.cpp | 24 | ||||
-rw-r--r-- | src/render/backend/jobs/loadmeshdatajob.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/managers_p.h | 13 | ||||
-rw-r--r-- | src/render/backend/meshdatamanager_p.h | 1 | ||||
-rw-r--r-- | src/render/backend/qrenderaspect.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/render-backend.pri | 2 | ||||
-rw-r--r-- | src/render/backend/renderentity.cpp | 15 | ||||
-rw-r--r-- | src/render/backend/renderentity_p.h | 15 | ||||
-rw-r--r-- | src/render/backend/renderer.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/renderer_p.h | 3 | ||||
-rw-r--r-- | src/render/backend/rendermesh.cpp | 170 | ||||
-rw-r--r-- | src/render/backend/rendermesh_p.h | 112 | ||||
-rw-r--r-- | tests/auto/render/renderentity/tst_renderentity.cpp | 7 |
14 files changed, 20 insertions, 350 deletions
diff --git a/src/render/backend/handle_types_p.h b/src/render/backend/handle_types_p.h index a7d79a06b..5a53e43b9 100644 --- a/src/render/backend/handle_types_p.h +++ b/src/render/backend/handle_types_p.h @@ -65,7 +65,6 @@ class SortCriterion; class RenderTechnique; class RenderTexture; class RenderTransform; -class RenderMesh; class RenderTarget; class RenderRenderPass; class RenderParameter; @@ -93,7 +92,6 @@ typedef QHandle<SortCriterion, 8> HSortCriterion; typedef QHandle<RenderTechnique, 16> HTechnique; typedef QHandle<RenderTexture, 16> HTexture; typedef QHandle<RenderTransform, 16> HTransform; -typedef QHandle<RenderMesh, 16> HMesh; typedef QHandle<RenderTarget, 8> HTarget; typedef QHandle<RenderRenderPass, 16> HRenderPass; typedef QHandle<TexImageData, 16> HTextureData; diff --git a/src/render/backend/jobs/framepreparationjob.cpp b/src/render/backend/jobs/framepreparationjob.cpp index 3a77ec67f..5c817f068 100644 --- a/src/render/backend/jobs/framepreparationjob.cpp +++ b/src/render/backend/jobs/framepreparationjob.cpp @@ -37,7 +37,6 @@ #include "framepreparationjob_p.h" #include <Qt3DRenderer/private/renderer_p.h> #include <Qt3DRenderer/private/renderentity_p.h> -#include <Qt3DRenderer/private/rendermesh_p.h> #include <Qt3DRenderer/private/rendershaderdata_p.h> #include <Qt3DRenderer/qmeshdata.h> #include <Qt3DRenderer/sphere.h> @@ -67,18 +66,19 @@ void FramePreparationJob::run() void FramePreparationJob::parseNodeTree(RenderEntity *node) { // Initialize worldBoundingVolume if Mesh associated - Qt3D::Render::RenderMesh *mesh = Q_NULLPTR; + Qt3D::Render::RenderGeometryRenderer *mesh = Q_NULLPTR; if ((node->localBoundingVolume()->isNull()) - && (mesh = node->renderComponent<RenderMesh>()) != Q_NULLPTR) { - if (!mesh->meshDataHandle().isNull()) { - Qt3D::QMeshData *meshData = mesh->meshData(); - if (meshData != Q_NULLPTR) { - const QAxisAlignedBoundingBox box = meshData->boundingBox(); - node->localBoundingVolume()->setCenter(box.center()); - const QVector3D &radii = box.radii(); - node->localBoundingVolume()->setRadius(qMax(radii.x(), qMax(radii.y(), radii.z()))); - } - } + && (mesh = node->renderComponent<RenderGeometryRenderer>()) != Q_NULLPTR) { + // if (!mesh->meshDataHandle().isNull()) { + // Qt3D::QMeshData *meshData = mesh->meshData(); + // if (meshData != Q_NULLPTR) { + // const QAxisAlignedBoundingBox box = meshData->boundingBox(); + // node->localBoundingVolume()->setCenter(box.center()); + // const QVector3D &radii = box.radii(); + // node->localBoundingVolume()->setRadius(qMax(radii.x(), qMax(radii.y(), radii.z()))); + // } + // } + // TO DO: Make that work with the GeometryRenderer } // Update transform properties in RenderShaderData diff --git a/src/render/backend/jobs/loadmeshdatajob.cpp b/src/render/backend/jobs/loadmeshdatajob.cpp index 5bc54ee48..93c3aea7d 100644 --- a/src/render/backend/jobs/loadmeshdatajob.cpp +++ b/src/render/backend/jobs/loadmeshdatajob.cpp @@ -87,7 +87,7 @@ void LoadMeshDataJob::run() qCWarning(Jobs) << Q_FUNC_INFO << "unknown attribute: position"; } lock.relock(); - m_renderer->meshManager()->lookupResource(m_meshUuid)->setMeshData(meshDataHandle); +// m_renderer->meshManager()->lookupResource(m_meshUuid)->setMeshData(meshDataHandle); } } // namespace Render diff --git a/src/render/backend/managers_p.h b/src/render/backend/managers_p.h index d212296f2..7dc7405ff 100644 --- a/src/render/backend/managers_p.h +++ b/src/render/backend/managers_p.h @@ -45,7 +45,6 @@ #include <Qt3DRenderer/private/renderentity_p.h> #include <Qt3DRenderer/private/renderlayer_p.h> #include <Qt3DRenderer/private/rendermaterial_p.h> -#include <Qt3DRenderer/private/rendermesh_p.h> #include <Qt3DRenderer/private/rendershader_p.h> #include <Qt3DRenderer/private/sortcriterion_p.h> #include <Qt3DRenderer/private/rendertechnique_p.h> @@ -157,17 +156,6 @@ public: MatrixManager() {} }; -class MeshManager : public QResourceManager< - RenderMesh, - QNodeId, - 16, - Qt3D::ArrayAllocatingPolicy, - Qt3D::ObjectLevelLockingPolicy> -{ -public: - MeshManager() {} -}; - class ShaderManager : public QResourceManager< RenderShader, QNodeId, @@ -320,7 +308,6 @@ Q_DECLARE_RESOURCE_INFO(Render::RenderEffect, Q_REQUIRES_CLEANUP); Q_DECLARE_RESOURCE_INFO(Render::RenderEntity, Q_REQUIRES_CLEANUP); Q_DECLARE_RESOURCE_INFO(Render::RenderLayer, Q_REQUIRES_CLEANUP); Q_DECLARE_RESOURCE_INFO(Render::RenderMaterial, Q_REQUIRES_CLEANUP); -Q_DECLARE_RESOURCE_INFO(Render::RenderMesh, Q_REQUIRES_CLEANUP); Q_DECLARE_RESOURCE_INFO(Render::RenderShader, Q_REQUIRES_CLEANUP); Q_DECLARE_RESOURCE_INFO(Render::SortCriterion, Q_REQUIRES_CLEANUP); Q_DECLARE_RESOURCE_INFO(Render::RenderTarget, Q_REQUIRES_CLEANUP); diff --git a/src/render/backend/meshdatamanager_p.h b/src/render/backend/meshdatamanager_p.h index 5a2e75422..4c4e54a9c 100644 --- a/src/render/backend/meshdatamanager_p.h +++ b/src/render/backend/meshdatamanager_p.h @@ -39,7 +39,6 @@ #include <Qt3DRenderer/qabstractmesh.h> #include <Qt3DRenderer/qmeshdata.h> -#include <Qt3DRenderer/private/rendermesh_p.h> #include <Qt3DRenderer/private/handle_types_p.h> #include <Qt3DCore/private/qresourcemanager_p.h> diff --git a/src/render/backend/qrenderaspect.cpp b/src/render/backend/qrenderaspect.cpp index 4d59dacc1..af1284b81 100644 --- a/src/render/backend/qrenderaspect.cpp +++ b/src/render/backend/qrenderaspect.cpp @@ -37,7 +37,6 @@ #include "qrenderaspect.h" #include "qrenderaspect_p.h" -#include <Qt3DRenderer/private/rendermesh_p.h> #include <Qt3DRenderer/private/meshdatamanager_p.h> #include <Qt3DRenderer/private/texturedatamanager_p.h> #include <Qt3DRenderer/private/renderer_p.h> @@ -213,7 +212,6 @@ void QRenderAspect::registerBackendTypes() registerBackendType<QAnnotation>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderAnnotation, Render::CriterionManager>(d->m_renderer->criterionManager()))); registerBackendType<QCameraLens>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderCameraLens, Render::CameraManager>(d->m_renderer->cameraManager()))); registerBackendType<QLayer>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderLayer, Render::LayerManager>(d->m_renderer->layerManager()))); - registerBackendType<QAbstractMesh>(QBackendNodeFunctorPtr(new Render::RenderMeshCreatorFunctor(d->m_renderer->meshManager(), d->m_renderer->meshDataManager()))); registerBackendType<QRenderPass>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderRenderPass, Render::RenderPassManager>(d->m_renderer->renderPassManager()))); registerBackendType<Render::QAbstractSceneLoader>(QBackendNodeFunctorPtr(new Render::RenderSceneFunctor(d->m_renderer->sceneManager()))); registerBackendType<QRenderTarget>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderTarget, Render::RenderTargetManager>(d->m_renderer->renderTargetManager()))); diff --git a/src/render/backend/render-backend.pri b/src/render/backend/render-backend.pri index 8c0d82614..04b4e24c8 100644 --- a/src/render/backend/render-backend.pri +++ b/src/render/backend/render-backend.pri @@ -10,7 +10,6 @@ HEADERS += \ $$PWD/renderconfiguration_p.h \ $$PWD/renderer_p.h \ $$PWD/rendermaterial_p.h \ - $$PWD/rendermesh_p.h \ $$PWD/qgraphicscontext_p.h \ $$PWD/rendershader_p.h \ $$PWD/rendertechnique_p.h \ @@ -65,7 +64,6 @@ SOURCES += \ $$PWD/renderconfiguration.cpp \ $$PWD/renderer.cpp \ $$PWD/rendermaterial.cpp \ - $$PWD/rendermesh.cpp \ $$PWD/qgraphicscontext.cpp \ $$PWD/rendershader.cpp \ $$PWD/rendertechnique.cpp \ diff --git a/src/render/backend/renderentity.cpp b/src/render/backend/renderentity.cpp index 1de9fbc34..3ac0e4692 100644 --- a/src/render/backend/renderentity.cpp +++ b/src/render/backend/renderentity.cpp @@ -276,18 +276,6 @@ void RenderEntity::removeComponent(const QNodeId &nodeId) } template<> -HMesh RenderEntity::componentHandle<RenderMesh>() const -{ - return m_renderer->meshManager()->lookupHandle(m_meshComponent); -} - -template<> -RenderMesh *RenderEntity::renderComponent<RenderMesh>() const -{ - return m_renderer->meshManager()->lookupResource(m_meshComponent); -} - -template<> HMaterial RenderEntity::componentHandle<RenderMaterial>() const { return m_renderer->materialManager()->lookupHandle(m_materialComponent); @@ -345,9 +333,6 @@ template<> QNodeId RenderEntity::componentUuid<RenderMaterial>() const { return m_materialComponent; } template<> -QNodeId RenderEntity::componentUuid<RenderMesh>() const { return m_meshComponent; } - -template<> QList<HLayer> RenderEntity::componentsHandle<RenderLayer>() const { QList<HLayer> layerHandles; diff --git a/src/render/backend/renderentity_p.h b/src/render/backend/renderentity_p.h index a6e9fd39d..ec0837e02 100644 --- a/src/render/backend/renderentity_p.h +++ b/src/render/backend/renderentity_p.h @@ -164,12 +164,6 @@ private: }; template<> -HMesh RenderEntity::componentHandle<RenderMesh>() const; - -template<> -RenderMesh *RenderEntity::renderComponent<RenderMesh>() const; - -template<> HMaterial RenderEntity::componentHandle<RenderMaterial>() const; template<> @@ -188,10 +182,10 @@ template<> RenderTransform *RenderEntity::renderComponent<RenderTransform>() const; template<> -HGeometryRenderer RenderEntity::componentHandle<RenderGeometryRenderer>() const; +Q_AUTOTEST_EXPORT HGeometryRenderer RenderEntity::componentHandle<RenderGeometryRenderer>() const; template<> -RenderGeometryRenderer *RenderEntity::renderComponent<RenderGeometryRenderer>() const; +Q_AUTOTEST_EXPORT RenderGeometryRenderer *RenderEntity::renderComponent<RenderGeometryRenderer>() const; template<> Q_AUTOTEST_EXPORT QNodeId RenderEntity::componentUuid<RenderTransform>() const; @@ -203,9 +197,6 @@ template<> Q_AUTOTEST_EXPORT QNodeId RenderEntity::componentUuid<RenderMaterial>() const; template<> -Q_AUTOTEST_EXPORT QNodeId RenderEntity::componentUuid<RenderMesh>() const; - -template<> QList<HLayer> RenderEntity::componentsHandle<RenderLayer>() const; template<> @@ -224,7 +215,7 @@ template<> Q_AUTOTEST_EXPORT QList<QNodeId> RenderEntity::componentsUuid<RenderShaderData>() const; template<> -QNodeId RenderEntity::componentUuid<RenderGeometryRenderer>() const; +Q_AUTOTEST_EXPORT QNodeId RenderEntity::componentUuid<RenderGeometryRenderer>() const; class RenderEntityFunctor : public QBackendNodeFunctor { diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index 7df5cbfc4..adf388027 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -60,7 +60,6 @@ #include <Qt3DRenderer/private/renderentity_p.h> #include <Qt3DRenderer/private/renderlogging_p.h> #include <Qt3DRenderer/private/rendermaterial_p.h> -#include <Qt3DRenderer/private/rendermesh_p.h> #include <Qt3DRenderer/private/renderpassfilternode_p.h> #include <Qt3DRenderer/private/renderqueue_p.h> #include <Qt3DRenderer/private/rendershader_p.h> @@ -135,7 +134,6 @@ Renderer::Renderer(QRenderAspect::RenderType type) , m_graphicsContext(Q_NULLPTR) , m_surface(Q_NULLPTR) , m_meshDataManager(new MeshDataManager()) - , m_meshManager(new MeshManager()) , m_cameraManager(new CameraManager()) , m_renderNodesManager(new EntityManager()) , m_materialManager(new MaterialManager()) diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h index 9e1ba5b63..a5350fac1 100644 --- a/src/render/backend/renderer_p.h +++ b/src/render/backend/renderer_p.h @@ -86,7 +86,6 @@ class RenderTechnique; class RenderShader; class RenderEntity; class MeshDataManager; -class MeshManager; class RenderCommand; class CameraManager; class EntityManager; @@ -157,7 +156,6 @@ public: void addAllocator(QFrameAllocator *allocator); inline MeshDataManager *meshDataManager() const { return m_meshDataManager; } - inline MeshManager *meshManager() const { return m_meshManager; } inline CameraManager *cameraManager() const { return m_cameraManager; } inline EntityManager *renderNodesManager() const { return m_renderNodesManager; } inline MaterialManager *materialManager() const { return m_materialManager; } @@ -240,7 +238,6 @@ private: QScopedPointer<QGraphicsContext> m_graphicsContext; QSurface *m_surface; MeshDataManager *m_meshDataManager; - MeshManager *m_meshManager; CameraManager *m_cameraManager; EntityManager *m_renderNodesManager; MaterialManager *m_materialManager; diff --git a/src/render/backend/rendermesh.cpp b/src/render/backend/rendermesh.cpp deleted file mode 100644 index 839de8853..000000000 --- a/src/render/backend/rendermesh.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). -** Copyright (C) 2015 The Qt Company Ltd and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "rendermesh_p.h" -#include "meshdatamanager_p.h" -#include "qmesh.h" - -#include <Qt3DRenderer/private/qgraphicscontext_p.h> -#include <Qt3DRenderer/private/managers_p.h> -#include <Qt3DRenderer/qmeshdata.h> -#include <Qt3DCore/qscenepropertychange.h> - -#include <QOpenGLContext> -#include <QOpenGLShaderProgram> -#include <QReadWriteLock> -#include <QReadLocker> -#include <QWriteLocker> - -QT_BEGIN_NAMESPACE - -namespace Qt3D { -namespace Render { - -/*! - * \class RenderMesh - * \internal - * - * Monitor a frontend Mesh for source changes. If the source is changed, - * the QMeshData returned is either a valid QMeshData corresponding to the source - * or null if the new QMeshData hasn't been loaded. If this is the case the meshDirty - * flag is set to true. - * - * \sa QMeshData - */ - -RenderMesh::RenderMesh() - : QBackendNode() - , m_meshDirty(true) - , m_meshDataManager(Q_NULLPTR) - , m_enabled(true) -{ -} - -RenderMesh::~RenderMesh() -{ - cleanup(); -} - -void RenderMesh::cleanup() -{ -} - -void RenderMesh::updateFromPeer(QNode *peer) -{ - QAbstractMesh *mesh = static_cast<QAbstractMesh *>(peer); - m_meshDirty = true; - m_enabled = mesh->isEnabled(); - setMeshFunctor(mesh->meshFunctor()); -} - -void RenderMesh::sceneChangeEvent(const QSceneChangePtr &e) -{ - switch (e->type()) { - case NodeUpdated: { - QScenePropertyChangePtr propertyChange = qSharedPointerCast<QScenePropertyChange>(e); - if (propertyChange->propertyName() == QByteArrayLiteral("meshFunctor")) // Mesh with source - setMeshFunctor(propertyChange->value().value<QAbstractMeshFunctorPtr>()); - else if (propertyChange->propertyName() == QByteArrayLiteral("enabled")) - m_enabled = propertyChange->value().toBool(); - break; - } - - default: - break; - } -} - -QMeshData *RenderMesh::meshData() const -{ - Q_ASSERT(m_meshDataManager); - return m_meshDataManager->data(m_meshDataHandle); -} - -HMeshData RenderMesh::meshDataHandle() const -{ - return m_meshDataHandle; -} - -void RenderMesh::setMeshData(HMeshData handle) -{ - m_meshDataHandle = handle; -} - -void RenderMesh::setMeshDataManager(MeshDataManager *manager) -{ - if (m_meshDataManager != manager) - m_meshDataManager = manager; -} - -void RenderMesh::setMeshFunctor(QAbstractMeshFunctorPtr functor) -{ - if (m_functor != functor) { - m_functor = functor; - m_meshDataManager->addMeshData(m_functor, peerUuid()); - } -} - -RenderMeshCreatorFunctor::RenderMeshCreatorFunctor(MeshManager *meshManager, MeshDataManager *meshDataManager) - : m_meshManager(meshManager) - , m_meshDataManager(meshDataManager) -{ -} - -QBackendNode *RenderMeshCreatorFunctor::create(QNode *frontend, const QBackendNodeFactory *factory) const -{ - RenderMesh *mesh = m_meshManager->getOrCreateResource(frontend->id()); - mesh->setFactory(factory); - mesh->setMeshDataManager(m_meshDataManager); - mesh->setPeer(frontend); - return mesh; -} - -QBackendNode *RenderMeshCreatorFunctor::get(const QNodeId &id) const -{ - return m_meshManager->lookupResource(id); -} - -void RenderMeshCreatorFunctor::destroy(const QNodeId &id) const -{ - m_meshManager->releaseResource(id); -} - -} // Render -} // Qt3D - -QT_END_NAMESPACE diff --git a/src/render/backend/rendermesh_p.h b/src/render/backend/rendermesh_p.h deleted file mode 100644 index 600c141a8..000000000 --- a/src/render/backend/rendermesh_p.h +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QT3D_RENDER_RENDERMESH_H -#define QT3D_RENDER_RENDERMESH_H - -#include <Qt3DCore/qaxisalignedboundingbox.h> -#include <Qt3DRenderer/private/handle_types_p.h> -#include <Qt3DCore/qbackendnode.h> - -QT_BEGIN_NAMESPACE - -class QReadWriteLock; - -namespace Qt3D { - -class QAbstractMesh; -class QAbstractMeshFunctor; -class QRenderPass; -class QMeshData; - -typedef QSharedPointer<QAbstractMeshFunctor> QAbstractMeshFunctorPtr; - -namespace Render { - -class MeshManager; -class MeshDataManager; -class RenderEntity; -class RenderMaterial; -class RenderTechnique; - -class Q_AUTOTEST_EXPORT RenderMesh : public QBackendNode -{ -public: - RenderMesh(); - ~RenderMesh(); - void cleanup(); - - void updateFromPeer(QNode *peer) Q_DECL_OVERRIDE; - - void sceneChangeEvent(const QSceneChangePtr &e) Q_DECL_OVERRIDE; - HMeshData meshDataHandle() const; - QMeshData *meshData() const; - void setMeshData(HMeshData handle); - void setMeshDataManager(MeshDataManager *manager); - - QAbstractMeshFunctorPtr meshFunctor() const { return m_functor; } - inline bool isEnabled() const { return m_enabled; } - -private: - QAbstractMeshFunctorPtr m_functor; - - bool m_meshDirty; - HMeshData m_meshDataHandle; - MeshDataManager *m_meshDataManager; - bool m_enabled; - - void setMeshFunctor(QAbstractMeshFunctorPtr); -}; - -class RenderMeshCreatorFunctor : public QBackendNodeFunctor -{ -public: - explicit RenderMeshCreatorFunctor(MeshManager *meshManager, MeshDataManager *meshDataManager); - QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_OVERRIDE; - QBackendNode *get(const QNodeId &id) const Q_DECL_OVERRIDE; - void destroy(const QNodeId &id) const Q_DECL_OVERRIDE; - -private: - MeshManager *m_meshManager; - MeshDataManager *m_meshDataManager; -}; - -} // Render -} // Qt3D - -QT_END_NAMESPACE - -#endif // QT3D_RENDER_RENDERMESH_H diff --git a/tests/auto/render/renderentity/tst_renderentity.cpp b/tests/auto/render/renderentity/tst_renderentity.cpp index 0a5460b03..f6ba098d6 100644 --- a/tests/auto/render/renderentity/tst_renderentity.cpp +++ b/tests/auto/render/renderentity/tst_renderentity.cpp @@ -45,6 +45,7 @@ #include <Qt3DRenderer/QMaterial> #include <Qt3DRenderer/QLayer> #include <Qt3DRenderer/QShaderData> +#include <Qt3DRenderer/QGeometryRenderer> typedef Qt3D::QNodeId (*UuidMethod)(Qt3D::Render::RenderEntity *); typedef QList<Qt3D::QNodeId> (*UuidListMethod)(Qt3D::Render::RenderEntity *); @@ -56,9 +57,9 @@ void noopDeleter(QNode *) {} QNodeId transformUuid(RenderEntity *entity) { return entity->componentUuid<RenderTransform>(); } -QNodeId meshUuid(RenderEntity *entity) { return entity->componentUuid<RenderMesh>(); } QNodeId cameraLensUuid(RenderEntity *entity) { return entity->componentUuid<RenderCameraLens>(); } QNodeId materialUuid(RenderEntity *entity) { return entity->componentUuid<RenderMaterial>(); } +QNodeId geometryRendererUuid(RenderEntity *entity) { return entity->componentUuid<RenderGeometryRenderer>(); } QList<QNodeId> layersUuid(RenderEntity *entity) { return entity->componentsUuid<RenderLayer>(); } QList<QNodeId> shadersUuid(RenderEntity *entity) { return entity->componentsUuid<RenderShaderData>(); } @@ -79,8 +80,8 @@ private slots: QComponent *component = new Qt3D::QTransform; QTest::newRow("transform") << component << reinterpret_cast<void*>(transformUuid); - component = new QMesh; - QTest::newRow("mesh") << component << reinterpret_cast<void*>(meshUuid); + component = new QGeometryRenderer; + QTest::newRow("mesh") << component << reinterpret_cast<void*>(geometryRendererUuid); component = new QCameraLens; QTest::newRow("camera lens") << component << reinterpret_cast<void*>(cameraLensUuid); |