diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-02-26 14:16:21 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-03-05 12:00:29 +0000 |
commit | af20237e24ca355c9369eff116c4b16df62737cd (patch) | |
tree | 77f829355d34f982eb5f18b885f6a837a6633f6d | |
parent | 34b3c898f4d7cbac46550a59bf5ac487df578188 (diff) |
QGeometry: move verticesPerPath to QGeometryRenderer
Change-Id: I6f86164eff9f0709f400c4404cf1d104e7632be5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
19 files changed, 71 insertions, 105 deletions
diff --git a/examples/qt3d/tessellation-modes/TessellatedWireframeEffect.qml b/examples/qt3d/tessellation-modes/TessellatedWireframeEffect.qml index 0a480461c..5d4841c2a 100644 --- a/examples/qt3d/tessellation-modes/TessellatedWireframeEffect.qml +++ b/examples/qt3d/tessellation-modes/TessellatedWireframeEffect.qml @@ -64,9 +64,9 @@ Effect { property alias shaderProgram: program parameters: [ - Parameter { name: "ambient"; value: Qt.vector3d( 0.1, 0.1, 0.1 ) }, - Parameter { name: "diffuse"; value: Qt.vector3d( 0.7, 0.7, 0.7 ) }, - Parameter { name: "specular"; value: Qt.vector3d( 0.95, 0.95, 0.95 ) }, + Parameter { name: "ka"; value: Qt.vector3d( 0.1, 0.1, 0.1 ) }, + Parameter { name: "kd"; value: Qt.vector3d( 0.7, 0.7, 0.7 ) }, + Parameter { name: "ks"; value: Qt.vector3d( 0.95, 0.95, 0.95 ) }, Parameter { name: "shininess"; value: 150.0 } ] @@ -90,18 +90,6 @@ Effect { renderPasses: [ RenderPass { - - bindings: [ - ParameterMapping { parameterName: "ambient"; shaderVariableName: "ka"; bindingType: ParameterMapping.Uniform }, - ParameterMapping { parameterName: "diffuse"; shaderVariableName: "kd"; bindingType: ParameterMapping.Uniform }, - ParameterMapping { parameterName: "specular"; shaderVariableName: "ks"; bindingType: ParameterMapping.Uniform }, - - // TODO: Support uniform arrays. We want to be able to do (or something similar) and map vectors or lists of values - // through to the uniforms - ParameterMapping { parameterName: "innerTessLevel"; shaderVariableName: "inner[0]"; bindingType: ParameterMapping.Uniform }, - ParameterMapping { parameterName: "outerTessLevel"; shaderVariableName: "outer[0]"; bindingType: ParameterMapping.Uniform } - ] - shaderProgram: ShaderProgram { id: program vertexShaderCode: loadSource("qrc:/shaders/passthru.vert") diff --git a/examples/qt3d/tessellation-modes/TessellatedWireframeMaterial.qml b/examples/qt3d/tessellation-modes/TessellatedWireframeMaterial.qml index 3da72e634..af992b170 100644 --- a/examples/qt3d/tessellation-modes/TessellatedWireframeMaterial.qml +++ b/examples/qt3d/tessellation-modes/TessellatedWireframeMaterial.qml @@ -70,7 +70,7 @@ Material { Parameter { name: "shininess"; value: root.shininess }, Parameter { name: "line.width"; value: root.lineWidth }, Parameter { name: "line.color"; value: root.lineColor }, - Parameter { name: "innerTessLevel"; value: root.innerTessLevel }, - Parameter { name: "outerTessLevel"; value: root.outerTessLevel } + Parameter { name: "inner[0]"; value: root.innerTessLevel }, + Parameter { name: "outer[0]"; value: root.outerTessLevel } ] } diff --git a/examples/qt3d/tessellation-modes/tessellatedquadmesh.cpp b/examples/qt3d/tessellation-modes/tessellatedquadmesh.cpp index cebe09316..4e9edc097 100644 --- a/examples/qt3d/tessellation-modes/tessellatedquadmesh.cpp +++ b/examples/qt3d/tessellation-modes/tessellatedquadmesh.cpp @@ -85,7 +85,6 @@ public: m_positionAttribute->setByteStride(3 * sizeof(float)); m_positionAttribute->setBuffer(m_vertexBuffer); - setVerticesPerPatch(4); addAttribute(m_positionAttribute); } @@ -98,6 +97,7 @@ TessellatedQuadMesh::TessellatedQuadMesh(Qt3DCore::QNode *parent) : Qt3DRender::QGeometryRenderer(parent) { setPrimitiveType(Qt3DRender::QGeometryRenderer::Patches); + setVerticesPerPatch(4); setGeometry(new TessellatedGeometry(this)); } diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index 716dc53fc..db26f4adf 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -802,14 +802,14 @@ QAbstractFrameAdvanceService *Renderer::frameAdvanceService() const } // Called by executeCommands -void Renderer::performDraw(Geometry *rGeometry, GeometryRenderer *rGeometryRenderer, GLsizei primitiveCount, Attribute *indexAttribute) +void Renderer::performDraw(GeometryRenderer *rGeometryRenderer, GLsizei primitiveCount, Attribute *indexAttribute) { const GLint primType = rGeometryRenderer->primitiveType(); const bool drawIndexed = indexAttribute != Q_NULLPTR; const GLint indexType = drawIndexed ? GraphicsContext::glDataTypeFromAttributeDataType(indexAttribute->vertexBaseType()) : 0; if (rGeometryRenderer->primitiveType() == QGeometryRenderer::Patches) - m_graphicsContext->setVerticesPerPatch(rGeometry->verticesPerPatch()); + m_graphicsContext->setVerticesPerPatch(rGeometryRenderer->verticesPerPatch()); if (rGeometryRenderer->primitiveRestart()) m_graphicsContext->enablePrimitiveRestart(rGeometryRenderer->restartIndex()); @@ -987,7 +987,7 @@ bool Renderer::executeCommands(const RenderView *rv) //// Draw Calls if (primitiveCount && (specified || (vao && vao->isSpecified()))) { - performDraw(rGeometry, rGeometryRenderer, primitiveCount, indexAttribute); + performDraw(rGeometryRenderer, primitiveCount, indexAttribute); } else { allCommandsIssued = false; } diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h index 8f509ad85..6747b7739 100644 --- a/src/render/backend/renderer_p.h +++ b/src/render/backend/renderer_p.h @@ -268,7 +268,7 @@ private: RenderSettings *m_settings; static const RenderSettings ms_defaultSettings; - void performDraw(Geometry *rGeometry, GeometryRenderer *rGeometryRenderer, + void performDraw(GeometryRenderer *rGeometryRenderer, GLsizei primitiveCount, Attribute *indexAttribute); void performCompute(const RenderView *rv, RenderCommand *command); bool createOrUpdateVAO(RenderCommand *command, diff --git a/src/render/geometry/geometry.cpp b/src/render/geometry/geometry.cpp index 32d4e6aef..9c08662b5 100644 --- a/src/render/geometry/geometry.cpp +++ b/src/render/geometry/geometry.cpp @@ -52,7 +52,6 @@ namespace Render { Geometry::Geometry() : BackendNode(ReadOnly) - , m_verticesPerPatch(0) , m_geometryDirty(false) { } @@ -63,7 +62,6 @@ Geometry::~Geometry() void Geometry::cleanup() { - m_verticesPerPatch = 0; m_attributes.clear(); m_geometryDirty = false; m_boundingPositionAttribute = Qt3DCore::QNodeId(); @@ -76,7 +74,6 @@ void Geometry::updateFromPeer(Qt3DCore::QNode *peer) m_attributes.reserve(geometry->attributes().size()); Q_FOREACH (QAttribute *attribute, geometry->attributes()) m_attributes.push_back(attribute->id()); - m_verticesPerPatch = geometry->verticesPerPatch(); m_geometryDirty = true; if (geometry->boundingVolumeSpecifier()->positionAttribute() != Q_NULLPTR) m_boundingPositionAttribute = geometry->boundingVolumeSpecifier()->positionAttribute()->id(); @@ -106,13 +103,9 @@ void Geometry::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) } case NodeUpdated: - if (propertyName == QByteArrayLiteral("verticesPerPatch")) { - m_verticesPerPatch = propertyChange->value().value<int>(); - break; - - // Note: doesn't set dirtyness as this parameter changing doesn't need - // a new VAO update. - } else if (propertyName == QByteArrayLiteral("boundingVolumeSpecifierPositionAttribute")) { + // Note: doesn't set dirtyness as this parameter changing doesn't need + // a new VAO update. + if (propertyName == QByteArrayLiteral("boundingVolumeSpecifierPositionAttribute")) { m_boundingPositionAttribute = propertyChange->value().value<Qt3DCore::QNodeId>(); break; } diff --git a/src/render/geometry/geometry_p.h b/src/render/geometry/geometry_p.h index 0fd5de68f..3b8584aa3 100644 --- a/src/render/geometry/geometry_p.h +++ b/src/render/geometry/geometry_p.h @@ -73,13 +73,11 @@ public: inline QVector<Qt3DCore::QNodeId> attributes() const { return m_attributes; } inline bool isDirty() const { return m_geometryDirty; } - inline int verticesPerPatch() const { return m_verticesPerPatch; } inline Qt3DCore::QNodeId boundingPositionAttribute() const { return m_boundingPositionAttribute; } void unsetDirty(); private: QVector<Qt3DCore::QNodeId> m_attributes; - int m_verticesPerPatch; bool m_geometryDirty; Qt3DCore::QNodeId m_boundingPositionAttribute; }; diff --git a/src/render/geometry/geometryrenderer.cpp b/src/render/geometry/geometryrenderer.cpp index 2147a20fe..647c419c2 100644 --- a/src/render/geometry/geometryrenderer.cpp +++ b/src/render/geometry/geometryrenderer.cpp @@ -58,6 +58,7 @@ GeometryRenderer::GeometryRenderer() , m_baseVertex(0) , m_baseInstance(0) , m_restartIndex(-1) + , m_verticesPerPatch(0) , m_primitiveRestart(false) , m_primitiveType(QGeometryRenderer::Triangles) , m_dirty(false) @@ -77,6 +78,7 @@ void GeometryRenderer::cleanup() m_baseVertex = 0; m_baseInstance = 0; m_restartIndex = -1; + m_verticesPerPatch = 0; m_primitiveRestart = false; m_primitiveType = QGeometryRenderer::Triangles; m_geometryId = Qt3DCore::QNodeId(); @@ -101,6 +103,7 @@ void GeometryRenderer::updateFromPeer(Qt3DCore::QNode *peer) m_baseVertex = geometryRenderer->baseVertex(); m_baseInstance = geometryRenderer->baseInstance(); m_restartIndex = geometryRenderer->restartIndex(); + m_verticesPerPatch = geometryRenderer->verticesPerPatch(); m_primitiveRestart = geometryRenderer->primitiveRestart(); m_primitiveType = geometryRenderer->primitiveType(); m_enabled = geometryRenderer->isEnabled(); @@ -136,6 +139,9 @@ void GeometryRenderer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) } else if (propertyName == QByteArrayLiteral("restartIndex")) { m_restartIndex = propertyChange->value().value<int>(); m_dirty = true; + } else if (propertyName == QByteArrayLiteral("verticesPerPatch")) { + m_verticesPerPatch = propertyChange->value().value<int>(); + m_dirty = true; } else if (propertyName == QByteArrayLiteral("primitiveRestart")) { m_primitiveRestart = propertyChange->value().value<bool>(); m_dirty = true; diff --git a/src/render/geometry/geometryrenderer_p.h b/src/render/geometry/geometryrenderer_p.h index 8a1b4bd5f..9f30535e4 100644 --- a/src/render/geometry/geometryrenderer_p.h +++ b/src/render/geometry/geometryrenderer_p.h @@ -83,6 +83,7 @@ public: inline int baseVertex() const { return m_baseVertex; } inline int baseInstance() const { return m_baseInstance; } inline int restartIndex() const { return m_restartIndex; } + inline int verticesPerPatch() const { return m_verticesPerPatch; } inline bool primitiveRestart() const { return m_primitiveRestart; } inline QGeometryRenderer::PrimitiveType primitiveType() const { return m_primitiveType; } inline bool isDirty() const { return m_dirty; } @@ -102,6 +103,7 @@ private: int m_baseVertex; int m_baseInstance; int m_restartIndex; + int m_verticesPerPatch; bool m_primitiveRestart; QGeometryRenderer::PrimitiveType m_primitiveType; bool m_dirty; diff --git a/src/render/geometry/qgeometry.cpp b/src/render/geometry/qgeometry.cpp index df16aa53e..444bba4d6 100644 --- a/src/render/geometry/qgeometry.cpp +++ b/src/render/geometry/qgeometry.cpp @@ -73,12 +73,6 @@ void QGeometryPrivate::_q_boundingVolumeSpecifierChanged(QAttribute *) */ /*! - * \qmlproperty int Geometry::verticesPerPatch - * - * Holds vertices per patch. - */ - -/*! * \qmlproperty BoundingVolumeSpecifier Geometry::boundingVolumeSpecifier * * Holds bounding volume specifier. @@ -169,26 +163,6 @@ void QGeometry::removeAttribute(QAttribute *attribute) d->m_attributes.removeOne(attribute); } -void QGeometry::setVerticesPerPatch(int verticesPerPatch) -{ - Q_D(QGeometry); - if (d->m_verticesPerPatch != verticesPerPatch) { - d->m_verticesPerPatch = verticesPerPatch; - emit verticesPerPatchChanged(verticesPerPatch); - } -} - -/*! - * \property QGeometry::verticesPerPatch - * - * Holds vertices per patch. - */ -int QGeometry::verticesPerPatch() const -{ - Q_D(const QGeometry); - return d->m_verticesPerPatch; -} - /*! * \property QGeometry::boundingVolumeSpecifier * @@ -216,7 +190,6 @@ void QGeometry::copy(const QNode *ref) { QNode::copy(ref); const QGeometry *geometry = static_cast<const QGeometry *>(ref); - d_func()->m_verticesPerPatch = geometry->d_func()->m_verticesPerPatch; Q_FOREACH (QAttribute *attribute, geometry->d_func()->m_attributes) d_func()->m_attributes.append(qobject_cast<QAttribute *>(QNode::clone(attribute))); // Copy bounding volume specifier attribute diff --git a/src/render/geometry/qgeometry.h b/src/render/geometry/qgeometry.h index 61ec2d403..357c32681 100644 --- a/src/render/geometry/qgeometry.h +++ b/src/render/geometry/qgeometry.h @@ -56,7 +56,6 @@ typedef QVector<QAttribute *> QAttributeList; class QT3DRENDERSHARED_EXPORT QGeometry : public Qt3DCore::QNode { Q_OBJECT - Q_PROPERTY(int verticesPerPatch READ verticesPerPatch WRITE setVerticesPerPatch NOTIFY verticesPerPatchChanged) Q_PROPERTY(Qt3DRender::QBoundingVolumeSpecifier *boundingVolumeSpecifier READ boundingVolumeSpecifier CONSTANT) public: explicit QGeometry(Qt3DCore::QNode *parent = 0); @@ -66,16 +65,8 @@ public: void addAttribute(QAttribute *attribute); void removeAttribute(QAttribute *attribute); - int verticesPerPatch() const; - QBoundingVolumeSpecifier *boundingVolumeSpecifier(); -public Q_SLOTS: - void setVerticesPerPatch(int verticesPerPatch); - -Q_SIGNALS: - void verticesPerPatchChanged(int verticesPerPatch); - protected: QGeometry(QGeometryPrivate &dd, Qt3DCore::QNode *parent = 0); void copy(const Qt3DCore::QNode *ref) Q_DECL_OVERRIDE; diff --git a/src/render/geometry/qgeometry_p.h b/src/render/geometry/qgeometry_p.h index 9fcb46bb6..45de3b744 100644 --- a/src/render/geometry/qgeometry_p.h +++ b/src/render/geometry/qgeometry_p.h @@ -64,11 +64,9 @@ public: Q_DECLARE_PUBLIC(QGeometry) QGeometryPrivate() : QNodePrivate() - , m_verticesPerPatch(0) {} QAttributeList m_attributes; - int m_verticesPerPatch; QBoundingVolumeSpecifier m_boundingVolumeSpecifier; private: diff --git a/src/render/geometry/qgeometryrenderer.cpp b/src/render/geometry/qgeometryrenderer.cpp index 413bc37eb..6770fd8af 100644 --- a/src/render/geometry/qgeometryrenderer.cpp +++ b/src/render/geometry/qgeometryrenderer.cpp @@ -56,6 +56,7 @@ QGeometryRendererPrivate::QGeometryRendererPrivate() , m_baseVertex(0) , m_baseInstance(0) , m_restartIndex(-1) + , m_verticesPerPatch(0) , m_primitiveRestart(false) , m_geometry(Q_NULLPTR) , m_primitiveType(QGeometryRenderer::Triangles) @@ -99,6 +100,12 @@ QGeometryRendererPrivate::QGeometryRendererPrivate() */ /*! + * \qmlproperty int GeometryRenderer::verticesPerPatch + * + * Holds vertices per patch. + */ + +/*! * \qmlproperty bool GeometryRenderer::primitiveRestart * * Holds the primitive restart flag. @@ -223,6 +230,17 @@ int QGeometryRenderer::restartIndex() const } /*! + * \property QGeometry::verticesPerPatch + * + * Holds vertices per patch. + */ +int QGeometryRenderer::verticesPerPatch() const +{ + Q_D(const QGeometryRenderer); + return d->m_verticesPerPatch; +} + +/*! * \property QGeometryRenderer::primitiveRestart * * Holds the primitive restart flag. @@ -314,6 +332,15 @@ void QGeometryRenderer::setRestartIndex(int index) emit restartIndexChanged(index); } +void QGeometryRenderer::setVerticesPerPatch(int verticesPerPatch) +{ + Q_D(QGeometryRenderer); + if (d->m_verticesPerPatch != verticesPerPatch) { + d->m_verticesPerPatch = verticesPerPatch; + emit verticesPerPatchChanged(verticesPerPatch); + } +} + void QGeometryRenderer::setPrimitiveRestart(bool enabled) { Q_D(QGeometryRenderer); @@ -394,6 +421,7 @@ void QGeometryRenderer::copy(const QNode *ref) d_func()->m_restartIndex = other->d_func()->m_restartIndex; d_func()->m_primitiveRestart = other->d_func()->m_primitiveRestart; d_func()->m_primitiveType = other->d_func()->m_primitiveType; + d_func()->m_verticesPerPatch = other->d_func()->m_verticesPerPatch; d_func()->m_geometry = static_cast<QGeometry *>(QNode::clone(other->d_func()->m_geometry)); d_func()->m_functor = other->d_func()->m_functor; } diff --git a/src/render/geometry/qgeometryrenderer.h b/src/render/geometry/qgeometryrenderer.h index 831463726..8a458d988 100644 --- a/src/render/geometry/qgeometryrenderer.h +++ b/src/render/geometry/qgeometryrenderer.h @@ -61,6 +61,7 @@ class QT3DRENDERSHARED_EXPORT QGeometryRenderer : public Qt3DCore::QComponent Q_PROPERTY(int baseVertex READ baseVertex WRITE setBaseVertex NOTIFY baseVertexChanged) Q_PROPERTY(int baseInstance READ baseInstance WRITE setBaseInstance NOTIFY baseInstanceChanged) Q_PROPERTY(int restartIndex READ restartIndex WRITE setRestartIndex NOTIFY restartIndexChanged) + Q_PROPERTY(int verticesPerPatch READ verticesPerPatch WRITE setVerticesPerPatch NOTIFY verticesPerPatchChanged) Q_PROPERTY(bool primitiveRestart READ primitiveRestart WRITE setPrimitiveRestart NOTIFY primitiveRestartChanged) Q_PROPERTY(Qt3DRender::QGeometry* geometry READ geometry WRITE setGeometry NOTIFY geometryChanged) Q_PROPERTY(PrimitiveType primitiveType READ primitiveType WRITE setPrimitiveType NOTIFY primitiveTypeChanged) @@ -93,6 +94,7 @@ public: int baseVertex() const; int baseInstance() const; int restartIndex() const; + int verticesPerPatch() const; bool primitiveRestart() const; QGeometry *geometry() const; PrimitiveType primitiveType() const; @@ -106,6 +108,7 @@ public Q_SLOTS: void setBaseVertex(int baseVertex); void setBaseInstance(int baseInstance); void setRestartIndex(int index); + void setVerticesPerPatch(int verticesPerPatch); void setPrimitiveRestart(bool enabled); void setGeometry(QGeometry *geometry); void setPrimitiveType(PrimitiveType primitiveType); @@ -116,6 +119,7 @@ Q_SIGNALS: void baseVertexChanged(int baseVertex); void baseInstanceChanged(int baseInstance); void restartIndexChanged(int restartIndex); + void verticesPerPatchChanged(int verticesPerPatch); void primitiveRestartChanged(bool primitiveRestart); void geometryChanged(QGeometry *geometry); void primitiveTypeChanged(PrimitiveType primitiveType); diff --git a/src/render/geometry/qgeometryrenderer_p.h b/src/render/geometry/qgeometryrenderer_p.h index 0fcf0b958..bbc52c46d 100644 --- a/src/render/geometry/qgeometryrenderer_p.h +++ b/src/render/geometry/qgeometryrenderer_p.h @@ -70,6 +70,7 @@ public: int m_baseVertex; int m_baseInstance; int m_restartIndex; + int m_verticesPerPatch; bool m_primitiveRestart; QGeometry *m_geometry; QGeometryRenderer::PrimitiveType m_primitiveType; diff --git a/tests/auto/render/geometry/tst_geometry.cpp b/tests/auto/render/geometry/tst_geometry.cpp index 91a2b5fcf..9a0851165 100644 --- a/tests/auto/render/geometry/tst_geometry.cpp +++ b/tests/auto/render/geometry/tst_geometry.cpp @@ -54,7 +54,6 @@ private Q_SLOTS: geometry.addAttribute(&attr2); geometry.addAttribute(&attr3); geometry.addAttribute(&attr4); - geometry.setVerticesPerPatch(4); geometry.boundingVolumeSpecifier()->setPositionAttribute(&attr1); // WHEN @@ -64,7 +63,6 @@ private Q_SLOTS: QCOMPARE(renderGeometry.peerId(), geometry.id()); QCOMPARE(renderGeometry.isDirty(), true); QCOMPARE(renderGeometry.attributes().count(), 4); - QCOMPARE(renderGeometry.verticesPerPatch(), 4); QCOMPARE(renderGeometry.boundingPositionAttribute(), attr1.id()); for (int i = 0; i < 4; ++i) @@ -80,7 +78,6 @@ private Q_SLOTS: QCOMPARE(renderGeometry.isDirty(), false); QVERIFY(renderGeometry.attributes().isEmpty()); QVERIFY(renderGeometry.peerId().isNull()); - QCOMPARE(renderGeometry.verticesPerPatch(), 0); QCOMPARE(renderGeometry.boundingPositionAttribute(), Qt3DCore::QNodeId()); // GIVEN @@ -95,7 +92,6 @@ private Q_SLOTS: geometry.addAttribute(&attr2); geometry.addAttribute(&attr3); geometry.addAttribute(&attr4); - geometry.setVerticesPerPatch(4); // WHEN renderGeometry.updateFromPeer(&geometry); @@ -104,7 +100,6 @@ private Q_SLOTS: // THEN QCOMPARE(renderGeometry.isDirty(), false); QVERIFY(renderGeometry.attributes().isEmpty()); - QCOMPARE(renderGeometry.verticesPerPatch(), 0); QCOMPARE(renderGeometry.boundingPositionAttribute(), Qt3DCore::QNodeId()); } @@ -143,16 +138,6 @@ private Q_SLOTS: QVERIFY(!renderGeometry.isDirty()); // WHEN - updateChange.reset(new Qt3DCore::QScenePropertyChange(Qt3DCore::NodeUpdated, Qt3DCore::QSceneChange::Node, Qt3DCore::QNodeId())); - updateChange->setValue(QVariant::fromValue(3)); - updateChange->setPropertyName("verticesPerPatch"); - renderGeometry.sceneChangeEvent(updateChange); - - // THEN - QCOMPARE(renderGeometry.verticesPerPatch(), 3); - QVERIFY(!renderGeometry.isDirty()); - - // WHEN const Qt3DCore::QNodeId boundingAttrId = Qt3DCore::QNodeId::createId(); updateChange.reset(new Qt3DCore::QScenePropertyChange(Qt3DCore::NodeUpdated, Qt3DCore::QSceneChange::Node, Qt3DCore::QNodeId())); updateChange->setValue(QVariant::fromValue(boundingAttrId)); diff --git a/tests/auto/render/qdefaultmeshes/tst_qdefaultmeshes.cpp b/tests/auto/render/qdefaultmeshes/tst_qdefaultmeshes.cpp index 0ff9bc238..51eaee7e8 100644 --- a/tests/auto/render/qdefaultmeshes/tst_qdefaultmeshes.cpp +++ b/tests/auto/render/qdefaultmeshes/tst_qdefaultmeshes.cpp @@ -98,7 +98,6 @@ private Q_SLOTS: const Qt3DRender::QGeometry *clonedGeometry = clone->geometry(); QCOMPARE(clonedGeometry->attributes().count(), geometry->attributes().count()); - QCOMPARE(geometry->verticesPerPatch(), clonedGeometry->verticesPerPatch()); for (int i = 0; i < geometry->attributes().count(); ++i) { const Qt3DRender::QAttribute *originalAttribute = static_cast<Qt3DRender::QAttribute *>(geometry->attributes().at(i)); diff --git a/tests/auto/render/qgeometry/tst_qgeometry.cpp b/tests/auto/render/qgeometry/tst_qgeometry.cpp index c59a38c7a..c23d14d18 100644 --- a/tests/auto/render/qgeometry/tst_qgeometry.cpp +++ b/tests/auto/render/qgeometry/tst_qgeometry.cpp @@ -59,7 +59,6 @@ private Q_SLOTS: QTest::newRow("defaultConstructed") << defaultConstructed << 0; Qt3DRender::QGeometry *geometry1 = new Qt3DRender::QGeometry(); - geometry1->setVerticesPerPatch(2); Qt3DRender::QAttribute *attribute = new Qt3DRender::QAttribute(Q_NULLPTR, QStringLiteral("Attr1"), Qt3DRender::QAttribute::Float, 4, 454); geometry1->addAttribute(attribute); geometry1->addAttribute(new Qt3DRender::QAttribute(Q_NULLPTR, QStringLiteral("Attr2"), Qt3DRender::QAttribute::Float, 4, 555)); @@ -73,7 +72,6 @@ private Q_SLOTS: geometry2->addAttribute(attribute); geometry2->addAttribute(new Qt3DRender::QAttribute(Q_NULLPTR, QStringLiteral("Attr3"), Qt3DRender::QAttribute::Float, 2, 327)); geometry2->removeAttribute(attribute); - geometry2->setVerticesPerPatch(3); QTest::newRow("3 - 1 attributes") << geometry2 << 2; } @@ -92,7 +90,6 @@ private Q_SLOTS: QCOMPARE(geometry->id(), clone->id()); QCOMPARE(attributeCount, geometry->attributes().count()); QCOMPARE(attributeCount, clone->attributes().count()); - QCOMPARE(geometry->verticesPerPatch(), clone->verticesPerPatch()); if (geometry->boundingVolumeSpecifier()->positionAttribute()) QCOMPARE(geometry->boundingVolumeSpecifier()->positionAttribute()->id(), clone->boundingVolumeSpecifier()->positionAttribute()->id()); @@ -152,19 +149,6 @@ private Q_SLOTS: arbiter.events.clear(); // WHEN - geometry->setVerticesPerPatch(2); - QCoreApplication::processEvents(); - - // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QScenePropertyChange>(); - QCOMPARE(change->propertyName(), "verticesPerPatch"); - QCOMPARE(change->value().toInt(), 2); - QCOMPARE(change->type(), Qt3DCore::NodeUpdated); - - arbiter.events.clear(); - - // WHEN geometry->boundingVolumeSpecifier()->setPositionAttribute(&attr); QCoreApplication::processEvents(); diff --git a/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp b/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp index 3f4b0b416..0912f4b9a 100644 --- a/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp +++ b/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp @@ -93,6 +93,7 @@ private Q_SLOTS: geometry1->setPrimitiveRestart(false); geometry1->setPrimitiveType(Qt3DRender::QGeometryRenderer::Triangles); geometry1->setPrimitiveCount(15); + geometry1->setVerticesPerPatch(2); geometry1->setGeometryFunctor(Qt3DRender::QGeometryFunctorPtr(new TestFunctor(383))); QTest::newRow("triangle") << geometry1; @@ -102,8 +103,9 @@ private Q_SLOTS: geometry2->setBaseVertex(58); geometry2->setBaseInstance(10); geometry2->setRestartIndex(65535); - geometry1->setPrimitiveCount(2056); + geometry2->setPrimitiveCount(2056); geometry2->setPrimitiveRestart(true); + geometry2->setVerticesPerPatch(3); geometry2->setPrimitiveType(Qt3DRender::QGeometryRenderer::Lines); geometry2->setGeometryFunctor(Qt3DRender::QGeometryFunctorPtr(new TestFunctor(305))); QTest::newRow("lines with restart") << geometry2; @@ -128,6 +130,7 @@ private Q_SLOTS: QCOMPARE(clone->restartIndex(), geometryRenderer->restartIndex()); QCOMPARE(clone->primitiveRestart(), geometryRenderer->primitiveRestart()); QCOMPARE(clone->primitiveType(), geometryRenderer->primitiveType()); + QCOMPARE(clone->verticesPerPatch(), geometryRenderer->verticesPerPatch()); if (geometryRenderer->geometry() != Q_NULLPTR) { QVERIFY(clone->geometry() != Q_NULLPTR); @@ -213,6 +216,19 @@ private Q_SLOTS: arbiter.events.clear(); // WHEN + geometryRenderer->setVerticesPerPatch(2); + QCoreApplication::processEvents(); + + // THEN + QCOMPARE(arbiter.events.size(), 1); + change = arbiter.events.first().staticCast<Qt3DCore::QScenePropertyChange>(); + QCOMPARE(change->propertyName(), "verticesPerPatch"); + QCOMPARE(change->value().toInt(), 2); + QCOMPARE(change->type(), Qt3DCore::NodeUpdated); + + arbiter.events.clear(); + + // WHEN geometryRenderer->setPrimitiveRestart(true); QCoreApplication::processEvents(); |