示例#1
0
        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();
        }
示例#2
0
        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)));
        }