/// <summary>
 /// release and remove element from the scene
 /// </summary>
 /// <param name="scene"></param>
 /// <param name="element"></param>
 public static void ReleaseElement(this ScientificVisual3DControl scene, SceneElement element)
 {
     scene.OpenGL.MakeCurrent();
     ReleaseElement(element);
     if (element.Parent != null)
     {
         SceneElement parent = element.Parent;
         if (parent != null)
         {
             parent.RemoveChild(element);
         }
     }
 }
        private static void ReleaseElement(SceneElement element)
        {
            List <SceneElement> children = new List <SceneElement>();

            children.AddRange(element.Children);
            foreach (SceneElement child in children)
            {
                ReleaseElement(child);
                element.RemoveChild(child);
            }
            children.Clear();
            if (element is IDisposable)
            {
                ((IDisposable)element).Dispose();
            }
        }