/// <inheritdoc/> protected override void Dispose(Boolean disposing) { if (Disposed) { return; } if (disposing) { if (!Ultraviolet.Disposed) { if (vao != 0) { Ultraviolet.QueueWorkItem((state) => { var vaoName = ((OpenGLGeometryStream)state).vao; gl.DeleteVertexArray(vaoName); gl.ThrowIfError(); OpenGLState.DeleteVertexArrayObject(vaoName, 0, glElementArrayBufferBinding ?? 0); }, this); } } vbuffers.Clear(); ibuffer = null; } base.Dispose(disposing); }