protected override void Dispose(bool nongc) { if (nongc && Initialized) { GL.DetachShader(Handle, vertexShader.Handle); GL.DetachShader(Handle, fragmentShader.Handle); vertexShader.Dispose(); fragmentShader.Dispose(); vertexShader = null; fragmentShader = null; GL.DeleteProgram(Handle); Handle = 0; Initialized = false; } }