diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-01 14:54:30 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-04-10 15:03:28 +0000 |
commit | 417f43b0c540757e56c21f048def6507e907615e (patch) | |
tree | 94d2d08a132e101ec457e8842f3a2556326aa500 /src/render/materialsystem/shader.cpp | |
parent | 782ffe1f81dba9fb68a3b6592c2e90dea8d3057d (diff) |
Shader handles creation
Change-Id: I0705d14a4d7c5a9ce6df5274ff8e59414f55e695
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/materialsystem/shader.cpp')
-rw-r--r-- | src/render/materialsystem/shader.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/render/materialsystem/shader.cpp b/src/render/materialsystem/shader.cpp index 963d3f3e6..fa1a396b5 100644 --- a/src/render/materialsystem/shader.cpp +++ b/src/render/materialsystem/shader.cpp @@ -45,10 +45,11 @@ #include <QOpenGLShaderProgram> #include <QMutexLocker> #include <qshaderprogram.h> -#include <Qt3DRender/private/graphicscontext_p.h> #include <Qt3DRender/private/attachmentpack_p.h> -#include <Qt3DCore/qscenepropertychange.h> +#include <Qt3DRender/private/graphicscontext_p.h> +#include <Qt3DRender/private/qshaderprogram_p.h> #include <Qt3DRender/private/stringtoint_p.h> +#include <Qt3DCore/qscenepropertychange.h> QT_BEGIN_NAMESPACE @@ -104,6 +105,24 @@ void Shader::updateFromPeer(Qt3DCore::QNode *peer) updateDNA(); } +void Shader::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) +{ + const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QShaderProgramData>>(change); + const auto &data = typedChange->data; + + for (int i = QShaderProgram::Vertex; i <= QShaderProgram::Compute; ++i) + m_shaderCode[i].clear(); + + m_shaderCode[QShaderProgram::Vertex] = data.vertexShaderCode; + m_shaderCode[QShaderProgram::TessellationControl] = data.tessellationControlShaderCode; + m_shaderCode[QShaderProgram::TessellationEvaluation] = data.tessellationEvaluationShaderCode; + m_shaderCode[QShaderProgram::Geometry] = data.geometryShaderCode; + m_shaderCode[QShaderProgram::Fragment] = data.fragmentShaderCode; + m_shaderCode[QShaderProgram::Compute] = data.computeShaderCode; + m_isLoaded = false; + updateDNA(); +} + QVector<QString> Shader::uniformsNames() const { return m_uniformsNames; |