private void OnLost() { OnUnload(); if (_renderTarget != null) { _renderTarget.Dispose(); _renderTarget = null; } if (_swapChain != null) { _swapChain.Dispose(); _swapChain = null; } }
private void OnAcquireCheck() { if (_device == null || _renderTarget != null || _swapChain != null) { return; } var d3dpp = (D3DPRESENT_PARAMETERS)_d3dpp;//.Clone(); _size = _window.Size; d3dpp.hDeviceWindow = _window.Handle; d3dpp.BackBufferWidth = _size.Width; d3dpp.BackBufferHeight = _size.Height; if (_size.Width <= 0 || _size.Height <= 0) { return; } var failed = false; try { _swapChain = _device.CreateAdditionalSwapChain(ref d3dpp); _renderTarget = _swapChain.GetBackBuffer(0, D3DBACKBUFFER_TYPE.D3DBACKBUFFER_TYPE_MONO); //_renderTarget = _device.GetRenderTarget(0); } catch (Exception ex) { failed = true; ErrorMessage = string.Format("{0}: {1}", ex.GetType().Name, ex.Message); throw; } finally { if (failed) { OnLost(); } } }