summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-02-26 14:16:21 +0100
committerPaul Lemire <paul.lemire@kdab.com>2016-03-05 12:00:29 +0000
commitaf20237e24ca355c9369eff116c4b16df62737cd (patch)
tree77f829355d34f982eb5f18b885f6a837a6633f6d
parent34b3c898f4d7cbac46550a59bf5ac487df578188 (diff)
QGeometry: move verticesPerPath to QGeometryRenderer
Change-Id: I6f86164eff9f0709f400c4404cf1d104e7632be5 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--examples/qt3d/tessellation-modes/TessellatedWireframeEffect.qml18
-rw-r--r--examples/qt3d/tessellation-modes/TessellatedWireframeMaterial.qml4
-rw-r--r--examples/qt3d/tessellation-modes/tessellatedquadmesh.cpp2
-rw-r--r--src/render/backend/renderer.cpp6
-rw-r--r--src/render/backend/renderer_p.h2
-rw-r--r--src/render/geometry/geometry.cpp13
-rw-r--r--src/render/geometry/geometry_p.h2
-rw-r--r--src/render/geometry/geometryrenderer.cpp6
-rw-r--r--src/render/geometry/geometryrenderer_p.h2
-rw-r--r--src/render/geometry/qgeometry.cpp27
-rw-r--r--src/render/geometry/qgeometry.h9
-rw-r--r--src/render/geometry/qgeometry_p.h2
-rw-r--r--src/render/geometry/qgeometryrenderer.cpp28
-rw-r--r--src/render/geometry/qgeometryrenderer.h4
-rw-r--r--src/render/geometry/qgeometryrenderer_p.h1
-rw-r--r--tests/auto/render/geometry/tst_geometry.cpp15
-rw-r--r--tests/auto/render/qdefaultmeshes/tst_qdefaultmeshes.cpp1
-rw-r--r--tests/auto/render/qgeometry/tst_qgeometry.cpp16
-rw-r--r--tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp18
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();