/// <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; } }