Shader::~Shader() { if (m_shader) { ProgramPtr prog = program(); if (prog) prog->removeShader(shared_from_this()); glDeleteShader(m_shader); } }