public void ResizeScreen2() { d2dContext2.Target = null; _backBuffer2.Dispose(); _targetBitmap2.Dispose(); swapChain2.ResizeBuffers(1, 0, 0, DXGI.Format.B8G8R8A8_UNorm, DXGI.SwapChainFlags.None); _backBuffer2 = DXGI.Surface.FromSwapChain(swapChain2, 0); _targetBitmap2 = new D2D1.Bitmap1(d2dContext2, _backBuffer2); d2dContext2.Target = _targetBitmap2; }
public void ResizeScreen1() { d2dContext.Target = null; _backBuffer.Dispose(); _targetBitmap.Dispose(); swapChain.ResizeBuffers(1, 0, 0, DXGI.Format.B8G8R8A8_UNorm, DXGI.SwapChainFlags.None); _backBuffer = DXGI.Surface.FromSwapChain(swapChain, 0); _targetBitmap = new D2D1.Bitmap1(d2dContext, _backBuffer); d2dContext.Target = _targetBitmap; }
internal void ReleaseDevices() { IsRendererSuppressed = true; RenderTarget.Dispose(); Backbuffer.Dispose(); RenderTargetSurface.Dispose(); RenderTargetView.Dispose(); D2DDeviceContext.Dispose(); D2DDevice.Dispose(); D2DFactory.Dispose(); DXGIDevice.Dispose(); D3DDevice.Dispose(); D3DDefaultDevice.Dispose(); SwapChain.Dispose(); SwapChain = null; RenderTarget = null; RenderTargetSurface = null; Backbuffer = null; RenderTargetView = null; D2DDeviceContext = null; D2DFactory = null; D2DDevice = null; DXGIDevice = null; D3DDevice = null; D3DDefaultDevice = null; }
public override void Dispose() { if (dx11Device != null) { dx11Device.Dispose(); } if (dx11Factory != null) { dx11Factory.Dispose(); } if (dx11Output != null) { dx11Output.Dispose(); } if (dx11DuplicatedOutput != null) { dx11DuplicatedOutput.Dispose(); } if (dx11ScreenTexture != null) { dx11ScreenTexture.Dispose(); } if (dx11ScreenResource != null) { dx11ScreenResource.Dispose(); } if (dx11ScreenSurface != null) { dx11ScreenSurface.Dispose(); } if (screenShot != null) { screenShot.Dispose(); } dx11Device = null; dx11Factory = null; dx11Output = null; dx11DuplicatedOutput = null; dx11ScreenTexture = null; dx11ScreenResource = null; dx11ScreenSurface = null; screenShot = null; bmpData = null; GC.SuppressFinalize(this); }
public void Resize() { canDraw = false; device.ImmediateContext.ClearState(); d2dTarget.Dispose(); d2dContext.Dispose(); backBuffer.Dispose(); swapChain.ResizeBuffers(2, 0, 0, Format.Unknown, SwapChainFlags.None); backBuffer = Surface.FromSwapChain(swapChain, 0); d2dContext = new SharpDX.Direct2D1.DeviceContext(d2dDevice, SharpDX.Direct2D1.DeviceContextOptions.None); d2dTarget = new Bitmap1(d2dContext, backBuffer, properties); d2dContext.Target = d2dTarget; canDraw = true; }
public void Resize() { var size = Target.ClientSize; mDevice.Dispose(); mSurface.Dispose(); mSwapChain.ResizeBuffers(1, size.Width, size.Height, mSwapChainDesc.ModeDescription.Format, mSwapChainDesc.Flags); mSurface = dx.Surface.FromSwapChain(mSwapChain, 0); mDevice = new d2.DeviceContext(mSurface); mD3Device.ImmediateContext.ClearState(); base.Resized(); }
public void Dispose() { brush.Dispose(); wrFactory.Dispose(); target.Dispose(); bb.Dispose(); fac.Dispose(); d2dDevice.Dispose(); dxgiFactory2.Dispose(); dxgiAdapter.Dispose(); dxgiDevice2.Dispose(); defDevice.Dispose(); d3device.Dispose(); swapChain.Dispose(); d2dContext.Dispose(); }
private void CleanUpDeviceIndependentResources() { if (_deviceIndependedResourcesCreated) { OnCleanUpDeviceIndependentResources(); } if (_surface != null && !_surface.IsDisposed) { _surface.Dispose(); } _surface = null; if (_dc != null && !_dc.IsDisposed) { _dc.Dispose(); } _dc = null; if (_d2dDevice != null && !_d2dDevice.IsDisposed) { _d2dDevice.Dispose(); } _d2dDevice = null; if (_renderTarget != null && !_renderTarget.IsDisposed) { _renderTarget.Dispose(); } _renderTarget = null; if (_d2dFactory != null && !_d2dFactory.IsDisposed) { _d2dFactory.Dispose(); } _d2dFactory = null; }
private Bitmap GetDX11ScreenShot() { try { screenShot = null; screenShot = new Bitmap(WIDTH, HEIGHT, this.pixelFormat); if (dx11DuplicatedOutput != null) { dx11DuplicatedOutput.AcquireNextFrame(NEXT_FRAME_TIMEOUT, out dx11DuplFrameInfo, out dx11ScreenResource); dx11Device.ImmediateContext .CopyResource(dx11ScreenResource.QueryInterface <SharpDX.Direct3D11.Resource>(), dx11ScreenTexture); // cast from texture to surface, so we can access its bytes dx11ScreenSurface = dx11ScreenTexture.QueryInterface <SharpDX.DXGI.Surface>(); // map the resource to access it dx11Map = dx11ScreenSurface.Map(SharpDX.DXGI.MapFlags.Read); bmpData = screenShot.LockBits(boundsRect, ImageLockMode.WriteOnly, screenShot.PixelFormat); var sourcePtr = dx11Map.DataPointer; var destPtr = bmpData.Scan0; for (int y = 0; y < HEIGHT; y++) { // Copy a single line Utilities.CopyMemory(destPtr, sourcePtr, ARGB_WIDTH); // Advance pointers sourcePtr = IntPtr.Add(sourcePtr, dx11Map.Pitch); destPtr = IntPtr.Add(destPtr, bmpData.Stride); } dx11Device.ImmediateContext.UnmapSubresource(dx11ScreenTexture, 0); screenShot.UnlockBits(bmpData); dx11ScreenSurface.Unmap(); dx11ScreenSurface.Dispose(); dx11ScreenResource.Dispose(); dx11DuplicatedOutput.ReleaseFrame(); } else { return(screenShot = null); } dx11ScreenSurface = null; bmpData = null; GC.Collect(); return(screenShot); } catch (SharpDX.SharpDXException e) { if (e.ResultCode.Code == SharpDX.DXGI.ResultCode.WaitTimeout.Result.Code) { //screen does not changed LdpLog.Warning("DX11 surface timeout.. Recursion is coming:)"); return(GetDX11ScreenShot()); } else { return(screenShot = null); } } catch (Exception ex) { LdpLog.Error("GetDX11ScreenShot\n" + ex.Message); return(screenShot = null); } }
private Bitmap GetDX11ScreenShot() { try { screenShot = null; screenShot = new Bitmap(WIDTH, HEIGHT, this.pixelFormat); if (dx11DuplicatedOutput != null) { dx11DuplicatedOutput.AcquireNextFrame(NEXT_FRAME_TIMEOUT, out dx11DuplFrameInfo, out dx11ScreenResource); dx11Device.ImmediateContext .CopyResource(dx11ScreenResource.QueryInterface<SharpDX.Direct3D11.Resource>(), dx11ScreenTexture); // cast from texture to surface, so we can access its bytes dx11ScreenSurface = dx11ScreenTexture.QueryInterface<SharpDX.DXGI.Surface>(); // map the resource to access it dx11Map = dx11ScreenSurface.Map(SharpDX.DXGI.MapFlags.Read); bmpData = screenShot.LockBits(boundsRect, ImageLockMode.WriteOnly, screenShot.PixelFormat); var sourcePtr = dx11Map.DataPointer; var destPtr = bmpData.Scan0; for (int y = 0; y < HEIGHT; y++) { // Copy a single line Utilities.CopyMemory(destPtr, sourcePtr, ARGB_WIDTH); // Advance pointers sourcePtr = IntPtr.Add(sourcePtr, dx11Map.Pitch); destPtr = IntPtr.Add(destPtr, bmpData.Stride); } dx11Device.ImmediateContext.UnmapSubresource(dx11ScreenTexture, 0); screenShot.UnlockBits(bmpData); dx11ScreenSurface.Unmap(); dx11ScreenSurface.Dispose(); dx11ScreenResource.Dispose(); dx11DuplicatedOutput.ReleaseFrame(); } else return screenShot = null; dx11ScreenSurface = null; bmpData = null; GC.Collect(); return screenShot; } catch (SharpDX.SharpDXException e) { if (e.ResultCode.Code == SharpDX.DXGI.ResultCode.WaitTimeout.Result.Code) { //screen does not changed LdpLog.Warning("DX11 surface timeout.. Recursion is coming:)"); return GetDX11ScreenShot(); } else { return screenShot = null; } } catch (Exception ex) { LdpLog.Error("GetDX11ScreenShot\n" + ex.Message); return screenShot = null; } }