diff options
Diffstat (limited to 'src/render/backend/rendershader.cpp')
-rw-r--r-- | src/render/backend/rendershader.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/render/backend/rendershader.cpp b/src/render/backend/rendershader.cpp index a19bfd12d..48818615b 100644 --- a/src/render/backend/rendershader.cpp +++ b/src/render/backend/rendershader.cpp @@ -54,18 +54,30 @@ RenderShader::RenderShader() : QBackendNode() , m_program(Q_NULLPTR) , m_isLoaded(false) + , m_dna(0) { m_shaderCode.resize(static_cast<int>(QShaderProgram::Compute) + 1); } RenderShader::~RenderShader() { - cleanup(); + // TO DO: ShaderProgram is leaked as of now + // Fix that taking care that they may be shared given a same dna } void RenderShader::cleanup() { m_isLoaded = false; + m_dna = 0; + // TO DO: ShaderProgram is leaked as of now + // Fix that taking care that they may be shared given a same dna + m_program = Q_NULLPTR; + m_uniformsNames.clear(); + m_attributesNames.clear(); + m_uniformBlockNames.clear(); + m_uniforms.clear(); + m_attributes.clear(); + m_uniformBlocks.clear(); } void RenderShader::updateFromPeer(QNode *peer) @@ -100,6 +112,11 @@ QVector<QString> RenderShader::uniformBlockNames() const return m_uniformBlockNames; } +QVector<QByteArray> RenderShader::shaderCode() const +{ + return m_shaderCode; +} + void RenderShader::sceneChangeEvent(const QSceneChangePtr &e) { if (e->type() == NodeUpdated) { |