When removing an image rendered using volume rendering and ray cast, the following VTK error appears:
"a vtkShaderProgram2 object is being deleted before ReleaseGraphicsResources() has been called."
The MITK function mitk::GPUVolumeMapper3D::DeinitRAY() already has a comment on this, but the function is not called on the destructor of GPUVolumeMapper3D.
One possible solution is to call DeInit() on all mappers on the destructor of GPUVolumeMapper3D:
// Deinit all mappers for all renderers const RenderingManager::RenderWindowVector& renderWindows = RenderingManager::GetInstance()->GetAllRegisteredRenderWindows(); for (RenderingManager::RenderWindowVector::const_iterator iter = renderWindows.begin(); iter != renderWindows.end(); ++iter) { if ( mitk::BaseRenderer::GetInstance((*iter))->GetMapperID() == BaseRenderer::Standard3D ) { mitk::BaseRenderer* renderer = mitk::BaseRenderer::GetInstance((*iter)); DeinitCPU(renderer); DeinitGPU(renderer); // Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
DeinitRAY(renderer);
#endif
} }