/// <summary> /// Create the diplay Form. can be overriden. /// </summary> /// <param name="config"></param> /// <returns></returns> protected virtual Form CreateForm(DisplayWindowConfiguration config) { return(new RenderForm(config.WindowTitle) { ClientSize = new System.Drawing.Size(config.Width, config.Height) }); }
protected override void Initialize(DisplayWindowConfiguration displayWindowConfiguration) { // SwapChain description var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(displayWindowConfiguration.Width, displayWindowConfiguration.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = DisplayHandle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput }; // Create Device and SwapChain Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, new [] { FeatureLevel.Level_10_0 }, desc, out _device, out _swapChain); // Ignore all windows events Factory factory = _swapChain.GetParent <Factory>(); factory.MakeWindowAssociation(DisplayHandle, WindowAssociationFlags.IgnoreAll); // New RenderTargetView from the backbuffer _backBuffer = Texture2D.FromSwapChain <Texture2D>(_swapChain, 0); _backBufferView = new RenderTargetView(_device, _backBuffer); }
protected override void Initialize(DisplayWindowConfiguration displayWindowConfiguration) { // SwapChain description var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(displayWindowConfiguration.Width, displayWindowConfiguration.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = DisplayHandle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput }; // Create Device and SwapChain // Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, new [] { FeatureLevel.Level_10_0 }, desc, out _device, out _swapChain); Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, desc, out _device, out _swapChain); // Ignore all windows events Factory factory = _swapChain.GetParent <Factory>(); factory.MakeWindowAssociation(DisplayHandle, WindowAssociationFlags.IgnoreAll); // New RenderTargetView from the backbuffer _backBuffer = Texture2D.FromSwapChain <Texture2D>(_swapChain, 0); _backBufferView = new RenderTargetView(_device, _backBuffer); _depthBuffer = new Texture2D(Device, new Texture2DDescription() { Format = Format.D32_Float_S8X24_UInt, ArraySize = 1, MipLevels = 1, Width = _form.ClientSize.Width, Height = _form.ClientSize.Height, SampleDescription = new SampleDescription(1, 0), Usage = ResourceUsage.Default, BindFlags = BindFlags.DepthStencil, CpuAccessFlags = CpuAccessFlags.None, OptionFlags = ResourceOptionFlags.None }); // Create the depth buffer view _depthView = new DepthStencilView(Device, _depthBuffer); }
protected override void Initialize(DisplayWindowConfiguration displayWindowConfiguration) { base.Initialize(displayWindowConfiguration); Factory2D = new SharpDX.Direct2D1.Factory(); _surface = BackBuffer.QueryInterface <Surface>(); RenderTarget2D = new RenderTarget(Factory2D, _surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); RenderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; FactoryDWrite = new SharpDX.DirectWrite.Factory(); SceneColorBrush = new SolidColorBrush(RenderTarget2D, Color.White); }
protected override void Initialize(DisplayWindowConfiguration displayWindowConfiguration) { Factory2D = new SharpDX.Direct2D1.Factory(); FactoryDWrite = new SharpDX.DirectWrite.Factory(); HwndRenderTargetProperties properties = new HwndRenderTargetProperties(); properties.Hwnd = DisplayHandle; properties.PixelSize = new SharpDX.Size2(displayWindowConfiguration.Width, displayWindowConfiguration.Height); properties.PresentOptions = PresentOptions.None; RenderTarget2D = new WindowRenderTarget(Factory2D, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied)), properties); RenderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; SceneColorBrush = new SolidColorBrush(RenderTarget2D, Color.White); }
/// <summary> /// Runs the demo. /// </summary> public void Run(DisplayWindowConfiguration displayWindowConfiguration) { _displayWindowConfiguration = displayWindowConfiguration ?? new DisplayWindowConfiguration(); _form = CreateForm(_displayWindowConfiguration); Initialize(_displayWindowConfiguration); bool isFormClosed = false; bool formIsResizing = false; _form.MouseMove += HandleMouseMove; _form.MouseClick += HandleMouseClick; _form.MouseDown += HandleMouseDown; _form.MouseUp += HandleMouseUp; _form.KeyDown += HandleKeyDown; _form.KeyUp += HandleKeyUp; _form.ResizeBegin += (o, e) => { _displayWindowConfiguration.Height = ((Form)o).Height; _displayWindowConfiguration.Width = ((Form)o).Width; _isResizing = true; }; _form.ResizeEnd += (o, e) => { formIsResizing = false; HandleResize(o, e); }; _form.SizeChanged += HandleResize; _form.Resize += (o, args) => { if (_form.WindowState != _currentFormWindowState) { HandleResize(o, args); } _currentFormWindowState = _form.WindowState; }; _form.ResizeBegin += (o, args) => { formIsResizing = true; }; _form.ResizeEnd += (o, args) => { formIsResizing = false; HandleResize(o, args); }; _form.Closed += (o, args) => { isFormClosed = true; }; LoadContent(); clock.Start(); BeginRun(); RenderLoop.Run(_form, () => { if (isFormClosed) { return; } Update(); if (!formIsResizing) { Render(); } }); UnloadContent(); EndRun(); // Dispose explicity Dispose(); }
/// <summary> /// In a derived class, implements logic to initialize the sample. /// </summary> protected abstract void Initialize(DisplayWindowConfiguration displayWindowConfiguration);