Esempio n. 1
0
        /// <summary>
        /// Properly dispose all of our COM objects after exiting. Invoked automatically by window.
        /// </summary>
        /// <param name="disposing"></param>
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    // Release all COM here
                    Util.ReleaseCom(ref DepthStencilState);
                    Util.ReleaseCom(ref DepthStencilView);
                    Util.ReleaseCom(ref DepthStencilBuffer);
                    Util.ReleaseCom(ref RenderTargetView);

                    if (SwapChain.IsFullScreen)
                    {
                        SwapChain.SetFullScreenState(false, null);
                    }
                    Util.ReleaseCom(ref SwapChain);
                    Util.ReleaseCom(ref Device);
                }
            }

            _disposed = true;

            base.Dispose(disposing);
        }
 private void DestroySwapChain()
 {
     if (_swapChain != null)
     {
         if (_isFullScreen)
         {
             _swapChain.SetFullScreenState(false, null);
         }
         if (_renderer != null)
         {
             _renderer.Resources.RemoveTrackedObject(_swapChain.ComPointer);
         }
         _swapChain.Dispose();
         _swapChain = null;
     }
 }