diff --git a/include/osg/ShaderComposer b/include/osg/ShaderComposer index a784eaed4..68c6d6c39 100644 --- a/include/osg/ShaderComposer +++ b/include/osg/ShaderComposer @@ -39,7 +39,7 @@ class OSG_EXPORT ShaderComposer : public osg::Object virtual osg::Shader* composeMain(const Shaders& shaders); virtual void addShaderToProgram(Program* program, const Shaders& shaders); - void releaseGLObjects(osg::State* state); + virtual void releaseGLObjects(osg::State* state) const; protected: diff --git a/src/osg/ShaderComposer.cpp b/src/osg/ShaderComposer.cpp index 09057b5a3..f2e167c12 100644 --- a/src/osg/ShaderComposer.cpp +++ b/src/osg/ShaderComposer.cpp @@ -37,10 +37,21 @@ ShaderComposer::~ShaderComposer() OSG_INFO<<"ShaderComposer::~ShaderComposer() "<second->releaseGLObjects(state); + } + + for(ShaderMainMap::const_iterator itr = _shaderMainMap.begin(); + itr != _shaderMainMap.end(); + ++itr) + { + itr->second->releaseGLObjects(state); + } } osg::Program* ShaderComposer::getOrCreateProgram(const ShaderComponents& shaderComponents)