diff options
author | Paul Lemire <paul.lemire.ecortex.kdab.com> | 2014-10-27 12:48:41 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2014-10-30 17:22:04 +0100 |
commit | a3d59834a35f34688a146e00690f2784f981b75f (patch) | |
tree | 9e5d3eff3facc3a2c1f0da5ed94d4022ee2746a3 /src/render | |
parent | 54d0ef3ba958e6ae0b76ca52c2ee63b1a808924c (diff) |
QTechnique refactored
Change-Id: I0389c19a52aa690b5eaa8c2a3e7dee6a2b17e565
Task-number: QTBUG-41533
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/backend/rendertechnique.cpp | 4 | ||||
-rw-r--r-- | src/render/frontend/qopenglfilter.cpp | 14 | ||||
-rw-r--r-- | src/render/frontend/qopenglfilter.h | 2 | ||||
-rw-r--r-- | src/render/frontend/qtechnique.cpp | 36 | ||||
-rw-r--r-- | src/render/frontend/qtechnique.h | 3 | ||||
-rw-r--r-- | src/render/frontend/qtechnique_p.h | 4 | ||||
-rw-r--r-- | src/render/io/gltfparser.cpp | 42 |
7 files changed, 46 insertions, 59 deletions
diff --git a/src/render/backend/rendertechnique.cpp b/src/render/backend/rendertechnique.cpp index b32de6a1f..70061b54a 100644 --- a/src/render/backend/rendertechnique.cpp +++ b/src/render/backend/rendertechnique.cpp @@ -93,7 +93,7 @@ void RenderTechnique::updateFromPeer(QNode *peer) // Copy OpenGLFilter info from frontend OpenGLFilter QOpenGLFilter *peerFilter = technique->openGLFilter(); - m_openglFilter->copy(peerFilter); + m_openglFilter->copy(*peerFilter); } } @@ -106,7 +106,7 @@ void RenderTechnique::sceneChangeEvent(const QSceneChangePtr &e) if (propertyChange->propertyName() == QByteArrayLiteral("openGLFilter")) { QOpenGLFilter *filter = propertyChange->value().value<QOpenGLFilter *>(); if (filter != Q_NULLPTR) { - m_openglFilter->copy(filter); + m_openglFilter->copy(*filter); delete filter; } } diff --git a/src/render/frontend/qopenglfilter.cpp b/src/render/frontend/qopenglfilter.cpp index a11dd568a..7cfff568e 100644 --- a/src/render/frontend/qopenglfilter.cpp +++ b/src/render/frontend/qopenglfilter.cpp @@ -74,15 +74,15 @@ QOpenGLFilter::QOpenGLFilter(QObject *parent) { } -void QOpenGLFilter::copy(const QOpenGLFilter *ref) +void QOpenGLFilter::copy(const QOpenGLFilter &ref) { Q_D(QOpenGLFilter); - d->m_api = ref->api(); - d->m_profile = ref->profile(); - d->m_major = ref->majorVersion(); - d->m_minor = ref->minorVersion(); - d->m_extensions = ref->extensions(); - d->m_vendor = ref->vendor(); + d->m_api = ref.api(); + d->m_profile = ref.profile(); + d->m_major = ref.majorVersion(); + d->m_minor = ref.minorVersion(); + d->m_extensions = ref.extensions(); + d->m_vendor = ref.vendor(); } QOpenGLFilter::Api QOpenGLFilter::api() const diff --git a/src/render/frontend/qopenglfilter.h b/src/render/frontend/qopenglfilter.h index 2c842df3f..c0a826f4e 100644 --- a/src/render/frontend/qopenglfilter.h +++ b/src/render/frontend/qopenglfilter.h @@ -82,7 +82,7 @@ public: explicit QOpenGLFilter(QObject *parent = 0); - void copy(const QOpenGLFilter *ref); + void copy(const QOpenGLFilter &ref); Api api() const; Profile profile() const; diff --git a/src/render/frontend/qtechnique.cpp b/src/render/frontend/qtechnique.cpp index ee81415af..b73c798a1 100644 --- a/src/render/frontend/qtechnique.cpp +++ b/src/render/frontend/qtechnique.cpp @@ -52,27 +52,32 @@ namespace Qt3D { QTechniquePrivate::QTechniquePrivate(QTechnique *qq) : QNodePrivate(qq) - , m_openGLFilter(new QOpenGLFilter()) { } QTechniquePrivate::~QTechniquePrivate() { - delete m_openGLFilter; } QTechnique::QTechnique(QNode *parent) : QNode(*new QTechniquePrivate(this), parent) { Q_D(QTechnique); - QObject::connect(d->m_openGLFilter, SIGNAL(openGLFilterChanged()), this, SLOT(openGLFilterChanged())); + QObject::connect(&d->m_openGLFilter, SIGNAL(openGLFilterChanged()), this, SLOT(openGLFilterChanged())); +} + +QTechnique::QTechnique(QTechniquePrivate &dd, QNode *parent) + : QNode(dd, parent) +{ + Q_D(QTechnique); + QObject::connect(&d->m_openGLFilter, SIGNAL(openGLFilterChanged()), this, SLOT(openGLFilterChanged())); } void QTechnique::copy(const QNode *ref) { QNode::copy(ref); const QTechnique *tech = static_cast<const QTechnique*>(ref); - d_func()->m_openGLFilter->copy(tech->d_func()->m_openGLFilter); + d_func()->m_openGLFilter.copy(tech->d_func()->m_openGLFilter); Q_FOREACH (QAnnotation *annotation, tech->d_func()->m_annotationList) addAnnotation(qobject_cast<QAnnotation *>(QNodePrivate::get(annotation)->clone())); @@ -82,13 +87,6 @@ void QTechnique::copy(const QNode *ref) addParameter(qobject_cast<QParameter *>(QNodePrivate::get(p)->clone())); } -QTechnique::QTechnique(QTechniquePrivate &dd, QNode *parent) - : QNode(dd, parent) -{ - Q_D(QTechnique); - QObject::connect(d->m_openGLFilter, SIGNAL(openGLFilterChanged()), this, SLOT(openGLFilterChanged())); -} - void QTechnique::openGLFilterChanged() { Q_D(QTechnique); @@ -236,20 +234,10 @@ QList<QParameter *> QTechnique::parameters() const return d->m_parameters; } -QParameter *QTechnique::parameterByName(QString name) const +QOpenGLFilter *QTechnique::openGLFilter() { - Q_D(const QTechnique); - foreach (QParameter* p, d->m_parameters) { - if (p->name() == name) - return p; - } - return NULL; -} - -QOpenGLFilter *QTechnique::openGLFilter() const -{ - Q_D(const QTechnique); - return d->m_openGLFilter; + Q_D(QTechnique); + return &d->m_openGLFilter; } } // of namespace Qt3D diff --git a/src/render/frontend/qtechnique.h b/src/render/frontend/qtechnique.h index 26eab14e7..858cc206c 100644 --- a/src/render/frontend/qtechnique.h +++ b/src/render/frontend/qtechnique.h @@ -77,8 +77,7 @@ public: void removePass(QRenderPass *pass); QList<QRenderPass *> renderPasses() const; - QParameter* parameterByName(QString name) const; - QOpenGLFilter *openGLFilter() const; + QOpenGLFilter *openGLFilter(); protected: QTechnique(QTechniquePrivate &dd, QNode *parent = 0); diff --git a/src/render/frontend/qtechnique_p.h b/src/render/frontend/qtechnique_p.h index d3aa04b8c..cffacb008 100644 --- a/src/render/frontend/qtechnique_p.h +++ b/src/render/frontend/qtechnique_p.h @@ -43,6 +43,7 @@ #define QT3D_QTECHNIQUE_P_H #include <private/qnode_p.h> +#include <Qt3DRenderer/qopenglfilter.h> #include <Qt3DRenderer/qt3drenderer_global.h> QT_BEGIN_NAMESPACE @@ -53,7 +54,6 @@ class QTechnique; class QAnnotation; class QParameter; class QRenderPass; -class QOpenGLFilter; class QT3DRENDERERSHARED_EXPORT QTechniquePrivate : public QNodePrivate { @@ -65,7 +65,7 @@ public: QList<QAnnotation *> m_annotationList; QList<QParameter *> m_parameters; QList<QRenderPass*> m_renderPasses; - QOpenGLFilter *m_openGLFilter; + QOpenGLFilter m_openGLFilter; }; } // Qt3D diff --git a/src/render/io/gltfparser.cpp b/src/render/io/gltfparser.cpp index a035f29f0..38522b0e6 100644 --- a/src/render/io/gltfparser.cpp +++ b/src/render/io/gltfparser.cpp @@ -534,28 +534,28 @@ QMaterial* GLTFParser::material(QString id) processName(jsonObj, mat); - QJsonObject values = tech.value(KEY_VALUES).toObject(); - foreach (QString vName, values.keys()) { - QParameter* param = technique->parameterByName(vName); - if (!param) { - qWarning() << "unknown parameter:" << vName << "in technique" << tname - << "processing material" << id; - continue; - } +// QJsonObject values = tech.value(KEY_VALUES).toObject(); +// foreach (QString vName, values.keys()) { +// QParameter* param = technique->parameterForName(vName); +// if (!param) { +// qWarning() << "unknown parameter:" << vName << "in technique" << tname +// << "processing material" << id; +// continue; +// } - if (param->isTextureType()) { - QString textureId = values.value(vName).toString(); - if (!m_textures.contains(textureId)) { - qWarning() << "unknown texture" << textureId << "for parameter" << vName - << "of material" << id; - } else { - mat->setTextureParameter(vName, m_textures.value(textureId)); - } - } else { - // QVariant var = parameterValueFromJSON(param, values.value(vName)); - mat->addParameter(param); - } - } // of material technique-instance values iteration +// if (param->isTextureType()) { +// QString textureId = values.value(vName).toString(); +// if (!m_textures.contains(textureId)) { +// qWarning() << "unknown texture" << textureId << "for parameter" << vName +// << "of material" << id; +// } else { +// mat->setTextureParameter(vName, m_textures.value(textureId)); +// } +// } else { +// // QVariant var = parameterValueFromJSON(param, values.value(vName)); +// mat->addParameter(param); +// } +// } // of material technique-instance values iteration m_materialCache[id] = mat; return mat; |