Example #1
0
        private void Resize(ResizeParameters args)
        {
            Utilities.Dispose(ref _renderView1);
            Utilities.Dispose(ref _depthStencilView);

            _d3DDeviceContext.ClearState();

            _swapChain4.ResizeBuffers(
                args.BufferCount, args.Width, args.Height, Format.Unknown, args.SwapChainFlags);

            using (Texture2D backBuffer = _swapChain4.GetBackBuffer <Texture2D>(0))
                using (RenderTargetView renderView = new RenderTargetView(_d3DDevice5, backBuffer))
                {
                    _renderView1 = renderView.QueryInterface <RenderTargetView1>();
                }

            using (Texture2D depthBuffer = new Texture2D(
                       _d3DDevice5,
                       new Texture2DDescription
            {
                Format = Format.D24_UNorm_S8_UInt,
                ArraySize = 1,
                MipLevels = 1,
                Width = args.Width,
                Height = args.Height,
                SampleDescription = _swapChain4.Description.SampleDescription,
                BindFlags = BindFlags.DepthStencil,
                CpuAccessFlags = CpuAccessFlags.None,
                OptionFlags = ResourceOptionFlags.None,
                Usage = ResourceUsage.Default
            }))
            {
                _depthStencilView = new DepthStencilView(
                    _d3DDevice5, depthBuffer, new DepthStencilViewDescription
                {
                    Dimension = _swapChain4.Description.SampleDescription.Count > 1 ||
                                _swapChain4.Description.SampleDescription.Quality > 0
                            ? DepthStencilViewDimension.Texture2DMultisampled
                            : DepthStencilViewDimension.Texture2D
                });
            }

            _d3DDeviceContext.Rasterizer.SetViewport(Viewport = new Viewport(0, 0, args.Width, args.Height));

            SetRenderTarget(null);

            ResizeFinished?.Invoke(Viewport);
        }
Example #2
0
 /// <summary>
 /// Adds a new Render Target to the collection
 /// </summary>
 /// <param name="rtv">Render target view</param>
 internal void Add(RenderTargetView1 rtv)
 {
     this.rtv.Add(rtv);
 }
Example #3
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="rtv">Render target view</param>
 internal EngineRenderTargetView(RenderTargetView1 rtv)
 {
     this.rtv.Add(rtv);
 }
Example #4
0
 /// <inheritdoc />
 public void SetRenderTarget(RenderTargetView1?target)
 {
     _currentRenderView = target ?? _renderView1;
     _d3DDeviceContext.OutputMerger.SetRenderTargets(_depthStencilView, _currentRenderView);
 }