diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-29 17:19:36 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-10-03 21:18:41 +0200 |
commit | 7b26f6a1746419161a8f875e341b3e31220f4141 (patch) | |
tree | f784e568015e1f7f199abb388b97fefdb158c84e /examples | |
parent | c16689bb1ccf31416df7b8c69fe032898cf87dec (diff) |
QNode refactoring
Move almost everything to private classes.
Assimp loading restored.
All examples working.
QNode hierachy is now handled through QObject::setParent, addChild,
removeChild are part of the private api.
Note: commented QChangeArbiter unit tests as they can no longer work with this
patch and will restore them when QChangeArbiter will have been made private.
Task-number: QTBUG-41470
Task-number: QTBUG-41523
Change-Id: I4430974b3aa7f3744c38714b451b122e0cb4d0c9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/assimp/main.qml | 13 | ||||
-rw-r--r-- | examples/cpp_example/main.cpp | 24 | ||||
-rw-r--r-- | examples/cylinder-cpp/main.cpp | 20 | ||||
-rw-r--r-- | examples/deferred-renderer-cpp/deferredrenderer.cpp | 28 | ||||
-rw-r--r-- | examples/deferred-renderer-cpp/deferredrenderer.h | 6 | ||||
-rw-r--r-- | examples/deferred-renderer-cpp/main.cpp | 10 | ||||
-rw-r--r-- | examples/multiviewport/main.qml | 65 | ||||
-rw-r--r-- | examples/playground-qml/main.qml | 9 | ||||
-rw-r--r-- | examples/tessellation-modes/tessellatedquadmesh.cpp | 6 | ||||
-rw-r--r-- | examples/tessellation-modes/tessellatedquadmesh.h | 4 | ||||
-rw-r--r-- | examples/torus-cpp/main.cpp | 21 |
11 files changed, 89 insertions, 117 deletions
diff --git a/examples/assimp/main.qml b/examples/assimp/main.qml index b69f26812..b2af7c938 100644 --- a/examples/assimp/main.qml +++ b/examples/assimp/main.qml @@ -79,12 +79,15 @@ Entity } } - SceneLoader - { - id: scene - source: ":/assets/test_scene.dae" - components : [Transform { + Entity { + components : [ + Transform { Rotate {angle : 90; axis : Qt.vector3d(0, 1, 0)} + }, + SceneLoader + { + id: scene + source: ":/assets/test_scene.dae" }] } } diff --git a/examples/cpp_example/main.cpp b/examples/cpp_example/main.cpp index 738603f69..e329e0eb4 100644 --- a/examples/cpp_example/main.cpp +++ b/examples/cpp_example/main.cpp @@ -84,7 +84,7 @@ int main(int ac, char **av) Qt3D::QEntity *rootEntity = new Qt3D::QEntity(); rootEntity->setObjectName(QStringLiteral("rootEntity")); // Torus - Qt3D::QEntity *torusEntity = new Qt3D::QEntity(); + Qt3D::QEntity *torusEntity = new Qt3D::QEntity(rootEntity); // Torus shape data Qt3D::QTorusMesh *torus = new Qt3D::QTorusMesh(); @@ -106,7 +106,7 @@ int main(int ac, char **av) torusEntity->addComponent(torusTransforms); // Scene file - Qt3D::QEntity *sceneEntity = new Qt3D::QEntity(); + Qt3D::QEntity *sceneEntity = new Qt3D::QEntity(rootEntity); Qt3D::QSceneLoader *scene = new Qt3D::QSceneLoader(); scene->setObjectName(QStringLiteral("scene")); Qt3D::QTransform *sceneTransform = new Qt3D::QTransform(); @@ -121,7 +121,7 @@ int main(int ac, char **av) sceneEntity->addComponent(scene); // Camera - Qt3D::QCamera *cameraEntity = new Qt3D::QCamera(); + Qt3D::QCamera *cameraEntity = new Qt3D::QCamera(rootEntity); cameraEntity->setObjectName(QStringLiteral("cameraEntity")); Qt3D::QCameraLens *cameraLens = new Qt3D::QCameraLens(); Qt3D::QTransform *cameraTransform = new Qt3D::QTransform(); @@ -139,30 +139,20 @@ int main(int ac, char **av) // FrameGraph Qt3D::QFrameGraph *frameGraph = new Qt3D::QFrameGraph(); Qt3D::QTechniqueFilter *techniqueFilter = new Qt3D::QTechniqueFilter(); - Qt3D::QCameraSelector *cameraSelector = new Qt3D::QCameraSelector(); - Qt3D::QRenderPassFilter *defaultRenderPassFilter = new Qt3D::QRenderPassFilter(); - Qt3D::QViewport *viewport = new Qt3D::QViewport(); - Qt3D::QClearBuffer *clearBuffer = new Qt3D::QClearBuffer(); + Qt3D::QViewport *viewport = new Qt3D::QViewport(techniqueFilter); + Qt3D::QClearBuffer *clearBuffer = new Qt3D::QClearBuffer(viewport); + Qt3D::QCameraSelector *cameraSelector = new Qt3D::QCameraSelector(clearBuffer); + Qt3D::QRenderPassFilter *defaultRenderPassFilter = new Qt3D::QRenderPassFilter(cameraSelector); // TechiqueFilter and renderPassFilter are not implement yet - viewport->setRect(QRectF(0, 0, 1, 1)); - viewport->addChild(clearBuffer); clearBuffer->setBuffers(Qt3D::QClearBuffer::ColorDepthBuffer); - clearBuffer->addChild(cameraSelector); cameraSelector->setCamera(cameraEntity); - cameraSelector->addChild(defaultRenderPassFilter); - techniqueFilter->addChild(viewport); frameGraph->setActiveFrameGraph(techniqueFilter); // Setting the FrameGraph rootEntity->addComponent(frameGraph); - // Build Node Tree - rootEntity->addChild(cameraEntity); - rootEntity->addChild(torusEntity); - rootEntity->addChild(sceneEntity); - // Set root object of the scene view.setRootObject(rootEntity); // Show window diff --git a/examples/cylinder-cpp/main.cpp b/examples/cylinder-cpp/main.cpp index 090d506fc..6880a1bb8 100644 --- a/examples/cylinder-cpp/main.cpp +++ b/examples/cylinder-cpp/main.cpp @@ -78,7 +78,7 @@ int main(int argc, char **argv) Qt3D::QEntity *rootEntity = new Qt3D::QEntity(); // Camera - Qt3D::QCamera *cameraEntity = new Qt3D::QCamera(); + Qt3D::QCamera *cameraEntity = new Qt3D::QCamera(rootEntity); cameraEntity->setObjectName(QStringLiteral("cameraEntity")); Qt3D::QCameraLens *cameraLens = new Qt3D::QCameraLens(); Qt3D::QTransform *cameraTransform = new Qt3D::QTransform(); @@ -96,20 +96,16 @@ int main(int argc, char **argv) // FrameGraph Qt3D::QFrameGraph *frameGraph = new Qt3D::QFrameGraph(); Qt3D::QTechniqueFilter *techniqueFilter = new Qt3D::QTechniqueFilter(); - Qt3D::QCameraSelector *cameraSelector = new Qt3D::QCameraSelector(); - Qt3D::QRenderPassFilter *defaultRenderPassFilter = new Qt3D::QRenderPassFilter(); - Qt3D::QViewport *viewport = new Qt3D::QViewport(); - Qt3D::QClearBuffer *clearBuffer = new Qt3D::QClearBuffer(); + Qt3D::QViewport *viewport = new Qt3D::QViewport(techniqueFilter); + Qt3D::QClearBuffer *clearBuffer = new Qt3D::QClearBuffer(viewport); + Qt3D::QCameraSelector *cameraSelector = new Qt3D::QCameraSelector(clearBuffer); + Qt3D::QRenderPassFilter *defaultRenderPassFilter = new Qt3D::QRenderPassFilter(cameraSelector); // TechiqueFilter and renderPassFilter are not implement yet viewport->setRect(QRectF(0, 0, 1, 1)); - viewport->addChild(clearBuffer); clearBuffer->setBuffers(Qt3D::QClearBuffer::ColorDepthBuffer); - clearBuffer->addChild(cameraSelector); cameraSelector->setCamera(cameraEntity); - cameraSelector->addChild(defaultRenderPassFilter); - techniqueFilter->addChild(viewport); frameGraph->setActiveFrameGraph(techniqueFilter); @@ -134,17 +130,13 @@ int main(int argc, char **argv) cylinderTransforms->appendTransform(cylinderRotation); // Cylinder - Qt3D::QEntity *cylinderEntity = new Qt3D::QEntity(); + Qt3D::QEntity *cylinderEntity = new Qt3D::QEntity(rootEntity); cylinderEntity->addComponent(cylinder); cylinderEntity->addComponent(cylinderTransforms); // Setting the FrameGraph rootEntity->addComponent(frameGraph); - // Build Node Tree - rootEntity->addChild(cameraEntity); - rootEntity->addChild(cylinderEntity); - // Set root object of the scene view.setRootObject(rootEntity); // Show window diff --git a/examples/deferred-renderer-cpp/deferredrenderer.cpp b/examples/deferred-renderer-cpp/deferredrenderer.cpp index 68f29e3ed..4d40365b6 100644 --- a/examples/deferred-renderer-cpp/deferredrenderer.cpp +++ b/examples/deferred-renderer-cpp/deferredrenderer.cpp @@ -44,25 +44,15 @@ DeferredRenderer::DeferredRenderer(Qt3D::QNode *parent) : Qt3D::QViewport(parent) - , m_clearGBuffer(new Qt3D::QClearBuffer()) - , m_clearScreenQuad(new Qt3D::QClearBuffer()) - , m_sceneFilter(new Qt3D::QLayerFilter()) - , m_screenQuadFilter(new Qt3D::QLayerFilter()) - , m_gBufferTargetSelector(new Qt3D::QRenderTargetSelector()) - , m_geometryPassFilter(new Qt3D::QRenderPassFilter()) - , m_finalPassFilter(new Qt3D::QRenderPassFilter()) - , m_sceneCameraSelector(new Qt3D::QCameraSelector()) + , m_screenQuadFilter(new Qt3D::QLayerFilter(this)) + , m_sceneFilter(new Qt3D::QLayerFilter(this)) + , m_clearScreenQuad(new Qt3D::QClearBuffer(m_screenQuadFilter)) + , m_gBufferTargetSelector(new Qt3D::QRenderTargetSelector(m_sceneFilter)) + , m_clearGBuffer(new Qt3D::QClearBuffer(m_gBufferTargetSelector)) + , m_geometryPassFilter(new Qt3D::QRenderPassFilter(m_clearGBuffer)) + , m_finalPassFilter(new Qt3D::QRenderPassFilter(m_clearScreenQuad)) + , m_sceneCameraSelector(new Qt3D::QCameraSelector(m_geometryPassFilter)) { - m_geometryPassFilter->addChild(m_sceneCameraSelector); - m_clearGBuffer->addChild(m_geometryPassFilter); - m_gBufferTargetSelector->addChild(m_clearGBuffer); - m_sceneFilter->addChild(m_gBufferTargetSelector); - addChild(m_sceneFilter); - - m_clearScreenQuad->addChild(m_finalPassFilter); - m_screenQuadFilter->addChild(m_clearScreenQuad); - addChild(m_screenQuadFilter); - m_clearGBuffer->setBuffers(Qt3D::QClearBuffer::ColorDepthBuffer); m_clearScreenQuad->setBuffers(Qt3D::QClearBuffer::ColorDepthBuffer); } @@ -86,7 +76,7 @@ void DeferredRenderer::setGeometryPassCriteria(QList<Qt3D::QCriterion *> criteri void DeferredRenderer::setFinalPassCriteria(QList<Qt3D::QCriterion *> criteria) { Q_FOREACH (Qt3D::QCriterion *c, criteria) - m_finalPassFilter->addChild(c); + c->setParent(m_finalPassFilter); } void DeferredRenderer::setGBufferLayer(const QString &layerName) diff --git a/examples/deferred-renderer-cpp/deferredrenderer.h b/examples/deferred-renderer-cpp/deferredrenderer.h index bb3ae6a85..e21988857 100644 --- a/examples/deferred-renderer-cpp/deferredrenderer.h +++ b/examples/deferred-renderer-cpp/deferredrenderer.h @@ -63,11 +63,11 @@ public: void setScreenQuadLayer(const QString &layerName); private: - Qt3D::QClearBuffer *m_clearGBuffer; - Qt3D::QClearBuffer *m_clearScreenQuad; - Qt3D::QLayerFilter *m_sceneFilter; Qt3D::QLayerFilter *m_screenQuadFilter; + Qt3D::QLayerFilter *m_sceneFilter; + Qt3D::QClearBuffer *m_clearScreenQuad; Qt3D::QRenderTargetSelector *m_gBufferTargetSelector; + Qt3D::QClearBuffer *m_clearGBuffer; Qt3D::QRenderPassFilter *m_geometryPassFilter; Qt3D::QRenderPassFilter *m_finalPassFilter; Qt3D::QCameraSelector *m_sceneCameraSelector; diff --git a/examples/deferred-renderer-cpp/main.cpp b/examples/deferred-renderer-cpp/main.cpp index d331f672f..e262f129d 100644 --- a/examples/deferred-renderer-cpp/main.cpp +++ b/examples/deferred-renderer-cpp/main.cpp @@ -137,7 +137,7 @@ int main(int ac, char **av) rootEntity->addComponent(frameGraph); // Scene Content - Qt3D::QEntity *sphereOne = new Qt3D::QEntity(); + Qt3D::QEntity *sphereOne = new Qt3D::QEntity(rootEntity); Qt3D::QMaterial *sphereOneMaterial = new Qt3D::QMaterial(); sphereOneMaterial->setEffect(sceneEffect); @@ -158,7 +158,7 @@ int main(int ac, char **av) sphereOne->addComponent(sceneLayer); sphereOne->addComponent(light2); - Qt3D::QEntity *sphereTwo = new Qt3D::QEntity(); + Qt3D::QEntity *sphereTwo = new Qt3D::QEntity(rootEntity); Qt3D::QMaterial *sphereTwoMaterial = new Qt3D::QMaterial(); sphereTwoMaterial->setEffect(sceneEffect); sphereTwoMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("meshColor"), QColor(Qt::yellow))); @@ -173,7 +173,7 @@ int main(int ac, char **av) sphereTwo->addComponent(light3); // Screen Quad - Qt3D::QEntity *screenQuad = new Qt3D::QEntity(); + Qt3D::QEntity *screenQuad = new Qt3D::QEntity(rootEntity); Qt3D::QMaterial *screenQuadMaterial = new Qt3D::QMaterial(); screenQuadMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("position"), gBuffer->positionTexture())); screenQuadMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("normal"), gBuffer->normalTexture())); @@ -190,10 +190,6 @@ int main(int ac, char **av) screenQuad->addComponent(screenQuadMaterial); screenQuad->addComponent(planeMesh); - rootEntity->addChild(sphereOne); - rootEntity->addChild(sphereTwo); - rootEntity->addChild(screenQuad); - // Set root object of the scene view.setRootObject(rootEntity); // Show window diff --git a/examples/multiviewport/main.qml b/examples/multiviewport/main.qml index 07a58c543..895a40c16 100644 --- a/examples/multiviewport/main.qml +++ b/examples/multiviewport/main.qml @@ -92,31 +92,32 @@ Entity { ClearBuffer { buffers : ClearBuffer.ColorDepthBuffer + } - Viewport { - id : topLeftViewport - rect : Qt.rect(0, 0, 0.5, 0.5) - CameraSelector {id : cameraSelectorTopLeftViewport; camera : sceneRoot.cameras[0]} - } + Viewport { + id : topLeftViewport + rect : Qt.rect(0, 0, 0.5, 0.5) + CameraSelector {id : cameraSelectorTopLeftViewport; camera : sceneRoot.cameras[0]} + } - Viewport { - id : topRightViewport - rect : Qt.rect(0.5, 0, 0.5, 0.5) - CameraSelector {id : cameraSelectorTopRightViewport;camera : sceneRoot.cameras[1]} - } + Viewport { + id : topRightViewport + rect : Qt.rect(0.5, 0, 0.5, 0.5) + CameraSelector {id : cameraSelectorTopRightViewport; camera : sceneRoot.cameras[1]} + } - Viewport { - id : bottomLeftViewport - rect : Qt.rect(0, 0.5, 0.5, 0.5) - CameraSelector {id : cameraSelectorBottomLeftViewport; camera : sceneRoot.cameras[2]} - } + Viewport { + id : bottomLeftViewport + rect : Qt.rect(0, 0.5, 0.5, 0.5) + CameraSelector {id : cameraSelectorBottomLeftViewport; camera : sceneRoot.cameras[2]} + } - Viewport { - id : bottomRightViewport - rect : Qt.rect(0.5, 0.5, 0.5, 0.5) - CameraSelector {id : cameraSelectorBottomRightViewport; camera : sceneRoot.cameras[3]} - } + Viewport { + id : bottomRightViewport + rect : Qt.rect(0.5, 0.5, 0.5, 0.5) + CameraSelector {id : cameraSelectorBottomRightViewport; camera : sceneRoot.cameras[3]} } + } // mainViewport } // frameGraph @@ -161,6 +162,19 @@ Entity { } Entity { + components : [ + Transform { + Rotate { + angle : -sceneRoot.rotationAngle + axis : Qt.vector3d(0, 0, 1) + } + }, + SceneLoader { + source: ":/assets/test_scene.dae" + }] + } + + Entity { id : cameraViewport4 property Transform transform : Transform { LookAt { @@ -173,17 +187,6 @@ Entity { } - SceneLoader { - id: scene - source: ":/assets/test_scene.dae" - components : [Transform { - Rotate { - angle : -sceneRoot.rotationAngle - axis : Qt.vector3d(0, 0, 1) - } - }] - } - } // sceneRoot } // rootNode diff --git a/examples/playground-qml/main.qml b/examples/playground-qml/main.qml index b2558ff2f..4074ba7c3 100644 --- a/examples/playground-qml/main.qml +++ b/examples/playground-qml/main.qml @@ -512,8 +512,11 @@ Entity { } } - SceneLoader - { + Entity { + + id : sceneEntity + + components : SceneLoader { id: scene source: ":/assets/test_scene.dae" objectName: "dae_scene" @@ -531,6 +534,8 @@ Entity { // components : [scaleSceneTransform] } + } + Layer { id: ballLayer; name : "balls" } Entity { diff --git a/examples/tessellation-modes/tessellatedquadmesh.cpp b/examples/tessellation-modes/tessellatedquadmesh.cpp index 501eedb2a..5fc7a1028 100644 --- a/examples/tessellation-modes/tessellatedquadmesh.cpp +++ b/examples/tessellation-modes/tessellatedquadmesh.cpp @@ -50,9 +50,11 @@ TessellatedQuadMesh::TessellatedQuadMesh(Qt3D::QNode *parent) { } -TessellatedQuadMesh *TessellatedQuadMesh::doClone(bool isClone) const +TessellatedQuadMesh *TessellatedQuadMesh::doClone() const { - return new TessellatedQuadMesh(); + TessellatedQuadMesh *clone = new TessellatedQuadMesh(); + clone->copy(this); + return clone; } class TessellatedQuadMeshFunctor : public Qt3D::QAbstractMeshFunctor diff --git a/examples/tessellation-modes/tessellatedquadmesh.h b/examples/tessellation-modes/tessellatedquadmesh.h index 56221312d..36ceceff9 100644 --- a/examples/tessellation-modes/tessellatedquadmesh.h +++ b/examples/tessellation-modes/tessellatedquadmesh.h @@ -52,8 +52,8 @@ public: Qt3D::QAbstractMeshFunctorPtr meshFunctor() const Q_DECL_OVERRIDE; -protected: - TessellatedQuadMesh *doClone(bool isClone = true) const Q_DECL_OVERRIDE; +private: + TessellatedQuadMesh *doClone() const Q_DECL_OVERRIDE; }; #endif // TESSELLATEDQUAD_H diff --git a/examples/torus-cpp/main.cpp b/examples/torus-cpp/main.cpp index e9f6ea261..065780f40 100644 --- a/examples/torus-cpp/main.cpp +++ b/examples/torus-cpp/main.cpp @@ -79,7 +79,7 @@ int main(int argc, char **argv) Qt3D::QEntity *rootEntity = new Qt3D::QEntity(); // Camera - Qt3D::QCamera *cameraEntity = new Qt3D::QCamera(); + Qt3D::QCamera *cameraEntity = new Qt3D::QCamera(rootEntity); cameraEntity->setObjectName(QStringLiteral("cameraEntity")); Qt3D::QCameraLens *cameraLens = new Qt3D::QCameraLens(); Qt3D::QTransform *cameraTransform = new Qt3D::QTransform(); @@ -97,21 +97,16 @@ int main(int argc, char **argv) // FrameGraph Qt3D::QFrameGraph *frameGraph = new Qt3D::QFrameGraph(); Qt3D::QTechniqueFilter *techniqueFilter = new Qt3D::QTechniqueFilter(); - Qt3D::QCameraSelector *cameraSelector = new Qt3D::QCameraSelector(); - Qt3D::QRenderPassFilter *defaultRenderPassFilter = new Qt3D::QRenderPassFilter(); - Qt3D::QViewport *viewport = new Qt3D::QViewport(); - Qt3D::QClearBuffer *clearBuffer = new Qt3D::QClearBuffer(); + Qt3D::QViewport *viewport = new Qt3D::QViewport(techniqueFilter); + Qt3D::QClearBuffer *clearBuffer = new Qt3D::QClearBuffer(viewport); + Qt3D::QCameraSelector *cameraSelector = new Qt3D::QCameraSelector(clearBuffer); + Qt3D::QRenderPassFilter *defaultRenderPassFilter = new Qt3D::QRenderPassFilter(cameraSelector); // TechiqueFilter and renderPassFilter are not implement yet viewport->setRect(QRectF(0, 0, 1, 1)); - viewport->addChild(clearBuffer); clearBuffer->setBuffers(Qt3D::QClearBuffer::ColorDepthBuffer); - clearBuffer->addChild(cameraSelector); cameraSelector->setCamera(cameraEntity); - cameraSelector->addChild(defaultRenderPassFilter); - techniqueFilter->addChild(viewport); - frameGraph->setActiveFrameGraph(techniqueFilter); @@ -135,17 +130,13 @@ int main(int argc, char **argv) torusTransforms->appendTransform(torusRotation); // Torus - Qt3D::QEntity *torusEntity = new Qt3D::QEntity(); + Qt3D::QEntity *torusEntity = new Qt3D::QEntity(rootEntity); torusEntity->addComponent(torus); torusEntity->addComponent(torusTransforms); // Setting the FrameGraph rootEntity->addComponent(frameGraph); - // Build Node Tree - rootEntity->addChild(cameraEntity); - rootEntity->addChild(torusEntity); - // Set root object of the scene view.setRootObject(rootEntity); // Show window |