summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-03-24 14:12:36 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-03-30 15:16:12 +0000
commit9a7de8782afdbcffefeb6d45670f636202a032b5 (patch)
tree7f6be92dca4dd4488f23ece2093f3657a1aed945
parent5d250353e1a46a58cedfa081470a67a558db9457 (diff)
QShaderProgram creates creation changes
Change-Id: Ibbafc8494ea867c9b74bf8054c7ff37ac79252dc Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/render/materialsystem/qshaderprogram.cpp14
-rw-r--r--src/render/materialsystem/qshaderprogram.h1
-rw-r--r--src/render/materialsystem/qshaderprogram_p.h10
3 files changed, 25 insertions, 0 deletions
diff --git a/src/render/materialsystem/qshaderprogram.cpp b/src/render/materialsystem/qshaderprogram.cpp
index fcb7519d8..2c44444ee 100644
--- a/src/render/materialsystem/qshaderprogram.cpp
+++ b/src/render/materialsystem/qshaderprogram.cpp
@@ -265,6 +265,20 @@ QByteArray QShaderProgram::loadSource(const QUrl &sourceUrl)
return deincludify(Qt3DRender::QUrlHelper::urlToLocalFileOrQrc(sourceUrl));
}
+Qt3DCore::QNodeCreatedChangeBasePtr QShaderProgram::createNodeCreationChange() const
+{
+ auto creationChange = Qt3DCore::QNodeCreatedChangePtr<QShaderProgramData>::create(this);
+ auto &data = creationChange->data;
+ Q_D(const QShaderProgram);
+ data.vertexShaderCode = d->m_vertexShaderCode;
+ data.tessellationControlShaderCode = d->m_tessControlShaderCode;
+ data.tessellationEvaluationShaderCode = d->m_tessEvalShaderCode;
+ data.geometryShaderCode = d->m_geometryShaderCode;
+ data.fragmentShaderCode = d->m_fragmentShaderCode;
+ data.computeShaderCode = d->m_computeShaderCode;
+ return creationChange;
+}
+
} // of namespace Qt3DRender
QT_END_NAMESPACE
diff --git a/src/render/materialsystem/qshaderprogram.h b/src/render/materialsystem/qshaderprogram.h
index 0df08588a..984dfe833 100644
--- a/src/render/materialsystem/qshaderprogram.h
+++ b/src/render/materialsystem/qshaderprogram.h
@@ -109,6 +109,7 @@ protected:
private:
Q_DECLARE_PRIVATE(QShaderProgram)
QT3D_CLONEABLE(QShaderProgram)
+ Qt3DCore::QNodeCreatedChangeBasePtr createNodeCreationChange() const Q_DECL_OVERRIDE;
};
}
diff --git a/src/render/materialsystem/qshaderprogram_p.h b/src/render/materialsystem/qshaderprogram_p.h
index d26b0becc..5f695a279 100644
--- a/src/render/materialsystem/qshaderprogram_p.h
+++ b/src/render/materialsystem/qshaderprogram_p.h
@@ -79,6 +79,16 @@ public:
QByteArray m_computeShaderCode;
};
+struct QShaderProgramData
+{
+ QByteArray vertexShaderCode;
+ QByteArray tessellationControlShaderCode;
+ QByteArray tessellationEvaluationShaderCode;
+ QByteArray geometryShaderCode;
+ QByteArray fragmentShaderCode;
+ QByteArray computeShaderCode;
+};
+
} // namespace Qt3DRender
QT_END_NAMESPACE