/// <summary> /// Hooked to allow resizing a texture/surface that is reused. Currently not in use as we create the texture for each request /// to support different sizes each time (as we use DirectX to copy only the region we are after rather than the entire backbuffer) /// </summary> /// <param name="swapChainPtr"></param> /// <param name="newTargetParameters"></param> /// <returns></returns> int ResizeTargetHook(IntPtr swapChainPtr, ref DXGI.DXGI_MODE_DESC newTargetParameters) { if (swapChainPtr != _swapChainPointer) { _swapChain = SlimDX.DXGI.SwapChain.FromPointer(swapChainPtr); } SwapChain swapChain = _swapChain; //using (SlimDX.DXGI.SwapChain swapChain = SlimDX.DXGI.SwapChain.FromPointer(swapChainPtr)) { // This version creates a new texture for each request so there is nothing to resize. // IF the size of the texture is known each time, we could create it once, and then possibly need to resize it here return(swapChain.ResizeTarget( new SlimDX.DXGI.ModeDescription() { Format = newTargetParameters.Format, Height = newTargetParameters.Height, RefreshRate = newTargetParameters.RefreshRate, Scaling = newTargetParameters.Scaling, ScanlineOrdering = newTargetParameters.ScanlineOrdering, Width = newTargetParameters.Width } ).Code); } }
/// <summary> /// Hooked to allow resizing a texture/surface that is reused. Currently not in use as we create the texture for each request /// to support different sizes each time (as we use DirectX to copy only the region we are after rather than the entire backbuffer) /// </summary> /// <param name="swapChainPtr"></param> /// <param name="newTargetParameters"></param> /// <returns></returns> int ResizeTargetHook(IntPtr swapChainPtr, ref DXGI.DXGI_MODE_DESC newTargetParameters) { DebugMessage("ResizeTarget"); try { if (_swapChain == null) { _swapChain = SlimDX.DXGI.SwapChain.FromPointer(swapChainPtr); } SwapChain swapChain = _swapChain; //using (SlimDX.DXGI.SwapChain swapChain = SlimDX.DXGI.SwapChain.FromPointer(swapChainPtr)) { // This version creates a new texture for each request so there is nothing to resize. // IF the size of the texture is known each time, we could create it once, and then possibly need to resize it here return(swapChain.ResizeTarget( new SlimDX.DXGI.ModeDescription() { Format = newTargetParameters.Format, Height = newTargetParameters.Height, RefreshRate = newTargetParameters.RefreshRate, Scaling = newTargetParameters.Scaling, ScanlineOrdering = newTargetParameters.ScanlineOrdering, Width = newTargetParameters.Width } ).Code); } } catch (Exception ex) { DebugMessage(ex.ToString()); return(System.Runtime.InteropServices.Marshal.GetHRForException(ex)); } }