summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-29 17:19:36 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-10-03 21:18:41 +0200
commit7b26f6a1746419161a8f875e341b3e31220f4141 (patch)
treef784e568015e1f7f199abb388b97fefdb158c84e /examples
parentc16689bb1ccf31416df7b8c69fe032898cf87dec (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.qml13
-rw-r--r--examples/cpp_example/main.cpp24
-rw-r--r--examples/cylinder-cpp/main.cpp20
-rw-r--r--examples/deferred-renderer-cpp/deferredrenderer.cpp28
-rw-r--r--examples/deferred-renderer-cpp/deferredrenderer.h6
-rw-r--r--examples/deferred-renderer-cpp/main.cpp10
-rw-r--r--examples/multiviewport/main.qml65
-rw-r--r--examples/playground-qml/main.qml9
-rw-r--r--examples/tessellation-modes/tessellatedquadmesh.cpp6
-rw-r--r--examples/tessellation-modes/tessellatedquadmesh.h4
-rw-r--r--examples/torus-cpp/main.cpp21
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