summaryrefslogtreecommitdiffstats
path: root/src/render/backend/rendershader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/backend/rendershader.cpp')
-rw-r--r--src/render/backend/rendershader.cpp19
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) {