diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-02-11 14:14:30 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-02-27 12:10:08 +0000 |
commit | 5bf4f93fcb8ff16aeadf55644be351c9989ab5b2 (patch) | |
tree | 9a502509da33a48dade8f7cbd0af1e7d3444b2f3 /tests/auto/render/gltfplugins/tst_gltfplugins.cpp | |
parent | 703090204ef41bced5634bbb332551dea1dd7b37 (diff) |
Make default geometries views
In Extras, make QTorusMesh and others a QGeometryView rather than
a QGeometryRenderer. Requires changes to scene graphs here and there
but going forward there simple shapes could be used as proxies for
picking or collision detection, etc.
Change-Id: Id488e064080dfd303e448aba11e6b242236b81d4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'tests/auto/render/gltfplugins/tst_gltfplugins.cpp')
-rw-r--r-- | tests/auto/render/gltfplugins/tst_gltfplugins.cpp | 67 |
1 files changed, 44 insertions, 23 deletions
diff --git a/tests/auto/render/gltfplugins/tst_gltfplugins.cpp b/tests/auto/render/gltfplugins/tst_gltfplugins.cpp index 26dddf12f..fbf24b22e 100644 --- a/tests/auto/render/gltfplugins/tst_gltfplugins.cpp +++ b/tests/auto/render/gltfplugins/tst_gltfplugins.cpp @@ -67,6 +67,7 @@ #include <Qt3DRender/qtexture.h> #include <Qt3DRender/qcolormask.h> #include <Qt3DRender/qblendequation.h> +#include <Qt3DRender/qgeometryrenderer.h> #include <Qt3DExtras/qconemesh.h> #include <Qt3DExtras/qcuboidmesh.h> @@ -326,7 +327,9 @@ void tst_gltfPlugins::createTestScene() mesh->setYZMeshResolution(QSize(2, 2)); mesh->setYZMeshResolution(QSize(2, 3)); mesh->setYZMeshResolution(QSize(3, 2)); - createAndAddEntity(QStringLiteral("Cube with DiffuseMap"), mesh, material, transform); + Qt3DRender::QGeometryRenderer *renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); + createAndAddEntity(QStringLiteral("Cube with DiffuseMap"), renderer, material, transform); } // Cone with PhongAlpha { @@ -350,7 +353,9 @@ void tst_gltfPlugins::createTestScene() mesh->setTopRadius(0.5f); mesh->setBottomRadius(1.5f); mesh->setLength(0.9f); - createAndAddEntity(QStringLiteral("Cone with PhongAlpha"), mesh, material, transform); + auto renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); + createAndAddEntity(QStringLiteral("Cone with PhongAlpha"), renderer, material, transform); } // Cylinder with Phong { @@ -367,7 +372,9 @@ void tst_gltfPlugins::createTestScene() mesh->setRings(3); mesh->setLength(1.2f); mesh->setSlices(16); - createAndAddEntity(QStringLiteral("Cylinder with Phong"), mesh, material, transform); + auto renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); + createAndAddEntity(QStringLiteral("Cylinder with Phong"), renderer, material, transform); } // Plane with DiffuseSpecularMap { @@ -392,8 +399,10 @@ void tst_gltfPlugins::createTestScene() mesh->setMeshResolution(QSize(3, 3)); mesh->setHeight(1.5f); mesh->setWidth(1.2f); + auto renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); createAndAddEntity(QStringLiteral("Plane with DiffuseSpecularMap"), - mesh, material, transform); + renderer, material, transform); } // Sphere with NormalDiffuseMap { @@ -421,8 +430,10 @@ void tst_gltfPlugins::createTestScene() mesh->setRings(16); mesh->setSlices(16); mesh->setGenerateTangents(true); + auto renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); createAndAddEntity(QStringLiteral("Sphere with NormalDiffuseMap"), - mesh, material, transform); + renderer, material, transform); } // Sphere with NormalDiffuseMapAlpha { @@ -450,8 +461,10 @@ void tst_gltfPlugins::createTestScene() mesh->setRings(16); mesh->setSlices(16); mesh->setGenerateTangents(true); + auto renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); createAndAddEntity(QStringLiteral("Sphere with NormalDiffuseMapAlpha"), - mesh, material, transform); + renderer, material, transform); } // Sphere with NormalDiffuseSpecularMap { @@ -482,8 +495,10 @@ void tst_gltfPlugins::createTestScene() mesh->setRings(16); mesh->setSlices(16); mesh->setGenerateTangents(true); + auto renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); createAndAddEntity(QStringLiteral("Sphere with NormalDiffuseSpecularMap"), - mesh, material, transform); + renderer, material, transform); } // Torus with Gooch { @@ -505,7 +520,9 @@ void tst_gltfPlugins::createTestScene() mesh->setMinorRadius(0.5f); mesh->setRings(16); mesh->setSlices(16); - createAndAddEntity(QStringLiteral("Torus with Gooch"), mesh, material, transform); + auto renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); + createAndAddEntity(QStringLiteral("Torus with Gooch"), renderer, material, transform); } // Custom cube with per-vertex colors { @@ -516,7 +533,7 @@ void tst_gltfPlugins::createTestScene() Qt3DRender::QGeometryRenderer *boxMesh = createCustomCube(); Qt3DCore::QBuffer *colorDataBuffer = - new Qt3DCore::QBuffer(boxMesh->geometry()); + new Qt3DCore::QBuffer(boxMesh->view()->geometry()); QByteArray colorBufferData; colorBufferData.resize(8 * 4 * sizeof(float)); @@ -530,7 +547,7 @@ void tst_gltfPlugins::createTestScene() colorDataBuffer->setData(colorBufferData); - addColorAttributeToGeometry(boxMesh->geometry(), colorDataBuffer, 8); + addColorAttributeToGeometry(boxMesh->view()->geometry(), colorDataBuffer, 8); createAndAddEntity(QStringLiteral("Custom cube with per-vertex colors"), boxMesh, material, transform); @@ -551,8 +568,10 @@ void tst_gltfPlugins::createTestScene() mesh->setRings(3); mesh->setLength(1.5f); mesh->setSlices(16); + auto renderer = new Qt3DRender::QGeometryRenderer; + renderer->setView(mesh); createAndAddEntity(QStringLiteral("Child with Phong"), - mesh, material, transform, parentEntity); + renderer, material, transform, parentEntity); } // Cube with custom material { @@ -571,7 +590,7 @@ void tst_gltfPlugins::createTestScene() transform->setRotation(Qt3DCore::QTransform::fromAxisAndAngle(1.0f, 2.0f, 3.0f, 90.0f)); Qt3DRender::QGeometryRenderer *boxMesh = createCustomCube(); Qt3DCore::QBuffer *offsetBuffer = - new Qt3DCore::QBuffer(boxMesh->geometry()); + new Qt3DCore::QBuffer(boxMesh->view()->geometry()); QByteArray offsetBufferData; offsetBufferData.resize(8 * 3 * sizeof(float)); @@ -594,7 +613,7 @@ void tst_gltfPlugins::createTestScene() customAttribute->setCount(8); customAttribute->setName(QStringLiteral("vertexOffset")); - boxMesh->geometry()->addAttribute(customAttribute); + boxMesh->view()->geometry()->addAttribute(customAttribute); createAndAddEntity(QStringLiteral("Custom cube with on-top material"), boxMesh, material, transform); @@ -732,8 +751,8 @@ void tst_gltfPlugins::compareComponents(Qt3DCore::QComponent *c1, Qt3DCore::QCom if (auto mesh1 = qobject_cast<Qt3DRender::QGeometryRenderer *>(c1)) { auto mesh2 = qobject_cast<Qt3DRender::QGeometryRenderer *>(c2); QVERIFY(mesh2 != nullptr); - auto geometry1 = mesh1->geometry(); - auto geometry2 = mesh2->geometry(); + auto geometry1 = mesh1->view()->geometry(); + auto geometry2 = mesh2->view()->geometry(); // Check that attributes match. compareAttributes( findAttribute(Qt3DCore::QAttribute::defaultPositionAttributeName(), @@ -961,8 +980,8 @@ QUrl tst_gltfPlugins::getTextureUrl(Qt3DRender::QAbstractTexture *tex) Qt3DRender::QGeometryRenderer *tst_gltfPlugins::createCustomCube() { - Qt3DRender::QGeometryRenderer *boxMesh = new Qt3DRender::QGeometryRenderer; - Qt3DCore::QGeometry *boxGeometry = new Qt3DCore::QGeometry(boxMesh); + Qt3DCore::QGeometryView *boxView = new Qt3DCore::QGeometryView(); + Qt3DCore::QGeometry *boxGeometry = new Qt3DCore::QGeometry(boxView); Qt3DCore::QBuffer *boxDataBuffer = new Qt3DCore::QBuffer(boxGeometry); Qt3DCore::QBuffer *indexDataBuffer = @@ -1005,13 +1024,15 @@ Qt3DRender::QGeometryRenderer *tst_gltfPlugins::createCustomCube() addPositionAttributeToGeometry(boxGeometry, boxDataBuffer, 8); addIndexAttributeToGeometry(boxGeometry, indexDataBuffer, 36); - boxMesh->setInstanceCount(1); - boxMesh->setIndexOffset(0); - boxMesh->setFirstInstance(0); - boxMesh->setVertexCount(36); - boxMesh->setPrimitiveType(Qt3DRender::QGeometryRenderer::Triangles); - boxMesh->setGeometry(boxGeometry); + boxView->setInstanceCount(1); + boxView->setIndexOffset(0); + boxView->setFirstInstance(0); + boxView->setVertexCount(36); + boxView->setPrimitiveType(Qt3DCore::QGeometryView::Triangles); + boxView->setGeometry(boxGeometry); + Qt3DRender::QGeometryRenderer *boxMesh = new Qt3DRender::QGeometryRenderer; + boxMesh->setView(boxView); return boxMesh; } |