void Resize(Common.Size ReqSize) { var w = (int)d2dRenderTarget.Size.Width; var h = (int)d2dRenderTarget.Size.Height; var nbb = new Texture2D(device, backBuffer.Description); ResourceRegion rrgn = new ResourceRegion() { Front = 0, Back = 1, Top = 0, Left = 0, Right = w, Bottom = h }; device.CopySubresourceRegion(backBuffer, 0, rrgn, nbb, 0, 0, 0, 0); d2dRenderTarget.Dispose(); renderView.Dispose(); surface.Dispose(); backBuffer.Dispose(); swapchain.ResizeBuffers(0, (int)ReqSize.width, (int)ReqSize.height, Format.B8G8R8A8_UNorm, SwapChainFlags.None); backBuffer = Texture2D.FromSwapChain <Texture2D>(swapchain, 0); renderView = new RenderTargetView(device, backBuffer); surface = backBuffer.QueryInterface <Surface1>(); d2dRenderTarget = new RenderTarget(d2dFactory, surface, new RenderTargetProperties(new PixelFormat(Format.B8G8R8A8_UNorm, AlphaMode.Premultiplied))); device.CopySubresourceRegion(nbb, 0, rrgn, backBuffer, 0, 0, 0, 0); nbb.Dispose(); }
void Resize(Size ReqSize) { // Initialise d2d things var nbb = new Texture2D(device, new Texture2DDescription() { ArraySize = 1, MipLevels = 1, SampleDescription = new SampleDescription(1, 0), OptionFlags = ResourceOptionFlags.GdiCompatible, Width = (int)ReqSize.width + edgeBufferSize, Height = (int)ReqSize.height + edgeBufferSize, Usage = ResourceUsage.Default, BindFlags = BindFlags.RenderTarget, Format = Format.B8G8R8A8_UNorm }); ResourceRegion rrgn = new ResourceRegion() { Front = 0, Back = 1, Top = 0, Left = 0, Right = (int)ReqSize.width, Bottom = (int)ReqSize.height }; //int bef = HashResource(nbb); device.CopySubresourceRegion(backBuffer, 0, rrgn, nbb, 0, 0, 0, 0); //int aft = HashResource(nbb); backBuffer.Dispose(); backBuffer = nbb; renderView.Dispose(); surface.Dispose(); d2dRenderTarget.Dispose(); renderView = new RenderTargetView(device, backBuffer); surface = backBuffer.QueryInterface <Surface1>(); d2dRenderTarget = new RenderTarget(d2dFactory, surface, new RenderTargetProperties(new PixelFormat(Format.B8G8R8A8_UNorm, AlphaMode.Premultiplied))); }