protected override void CreateSizeDependentResources(D3DApplicationBase app) { base.CreateSizeDependentResources(app); // Initialize camera Camera.ZNear = 0.5f; Camera.ZFar = 100f; Camera.FOV = (float)Math.PI / 3f; Camera.AspectRatio = Width / (float)Height; // Reinitialize the projection matrix ProjectionMatrix = Matrix.PerspectiveFovRH(Camera.FOV, Camera.AspectRatio, Camera.ZNear, Camera.ZFar); }
protected override void CreateSizeDependentResources(D3DApplicationBase app) { base.CreateSizeDependentResources(app); //// Create a viewport descriptor of the render size. //this.Viewport = new SharpDX.ViewportF( // (float)RenderTargetBounds.X + 100, // (float)RenderTargetBounds.Y + 100, // (float)RenderTargetBounds.Width - 200, // (float)RenderTargetBounds.Height - 200, // 0.0f, // min depth // 1.0f); // max depth //// Set the current viewport for the rasterizer. //this.DeviceManager.Direct3DContext.Rasterizer.SetViewport(Viewport); }
protected override void CreateSizeDependentResources(D3DApplicationBase app) { // Clear the render targets of any deferred contexts before // processing a resize. if (contextList != null) { foreach (var context in contextList) { if (context != null && context.TypeInfo == DeviceContextType.Deferred) { context.OutputMerger.ResetTargets(); context.Dispose(); } } } base.CreateSizeDependentResources(app); }
protected override void CreateSizeDependentResources(D3DApplicationBase app) { RemoveAndDispose(ref renderTargetSRV); RemoveAndDispose(ref resolvedTargetSRV); RemoveAndDispose(ref altRenderTargetRTV); RemoveAndDispose(ref altRenderTargetSRV); RemoveAndDispose(ref altRenderTargetUAV); RemoveAndDispose(ref altRenderTargetUIntUAV); RemoveAndDispose(ref renderTarget); RemoveAndDispose(ref resolvedTarget); base.CreateSizeDependentResources(app); #region Image Processing var device = this.DeviceManager.Direct3DDevice; renderTarget = ToDispose(RenderTargetView.ResourceAs <Texture2D>()); { renderTarget.DebugName = "Render Target"; renderTargetSRV = ToDispose(new ShaderResourceView(device, renderTarget)); // Initialize a target to resolve multi-sampled render target var resolvedDesc = renderTarget.Description; resolvedDesc.BindFlags = BindFlags.ShaderResource; resolvedDesc.SampleDescription = new SampleDescription(1, 0); resolvedTarget = ToDispose(new Texture2D(device, resolvedDesc)); { resolvedTargetSRV = ToDispose(new ShaderResourceView(device, resolvedTarget)); } // Create two alternative render targets // These are specially configured so they can be bound as SRV, RTV, and UAV // and also as a R32_UInt UAV (read/write to texture resource support) var rtDesc = renderTarget.Description; rtDesc.BindFlags = BindFlags.ShaderResource | BindFlags.RenderTarget | BindFlags.UnorderedAccess; rtDesc.SampleDescription = new SampleDescription(1, 0); rtDesc.Format = Format.R8G8B8A8_Typeless; // so it can be bound to the R32_UInt UAV rtDesc.MipLevels = 0; using (var altTarget = new Texture2D(device, rtDesc)) { altRenderTargetRTV = ToDispose(new RenderTargetView(device, altTarget , new RenderTargetViewDescription { Format = Format.R8G8B8A8_UNorm, Dimension = RenderTargetViewDimension.Texture2D } )); altRenderTargetSRV = ToDispose(new ShaderResourceView(device, altTarget , new ShaderResourceViewDescription { Dimension = SharpDX.Direct3D.ShaderResourceViewDimension.Texture2D, Format = Format.R8G8B8A8_UNorm, Texture2D = new ShaderResourceViewDescription.Texture2DResource { MipLevels = 1, MostDetailedMip = 0 } } )); altRenderTargetUAV = ToDispose(new UnorderedAccessView(device, altTarget , new UnorderedAccessViewDescription { Dimension = UnorderedAccessViewDimension.Texture2D, Format = Format.R8G8B8A8_UNorm, } )); altRenderTargetUIntUAV = ToDispose(new UnorderedAccessView(device, altTarget , new UnorderedAccessViewDescription { Dimension = UnorderedAccessViewDimension.Texture2D, Format = Format.R32_UInt, } )); } using (var alt2Target = new Texture2D(device, rtDesc)) { alt2RenderTargetRTV = ToDispose(new RenderTargetView(device, alt2Target , new RenderTargetViewDescription { Format = Format.R8G8B8A8_UNorm, Dimension = RenderTargetViewDimension.Texture2D } )); alt2RenderTargetSRV = ToDispose(new ShaderResourceView(device, alt2Target , new ShaderResourceViewDescription { Dimension = SharpDX.Direct3D.ShaderResourceViewDimension.Texture2D, Format = Format.R8G8B8A8_UNorm, Texture2D = new ShaderResourceViewDescription.Texture2DResource { MipLevels = 1, MostDetailedMip = 0 } } )); alt2RenderTargetUAV = ToDispose(new UnorderedAccessView(device, alt2Target , new UnorderedAccessViewDescription { Dimension = UnorderedAccessViewDimension.Texture2D, Format = Format.R8G8B8A8_UNorm, } )); alt2RenderTargetUIntUAV = ToDispose(new UnorderedAccessView(device, alt2Target , new UnorderedAccessViewDescription { Dimension = UnorderedAccessViewDimension.Texture2D, Format = Format.R32_UInt, } )); } } #endregion }
protected override void CreateSizeDependentResources(D3DApplicationBase app) { base.CreateSizeDependentResources(app); }