/// <summary> /// Basic DX10 initialization. It contains: creating a window, device, swap chain, render targets, viewPort /// </summary> private void InitializeDX() { //Initializing window window = new Form(); window.ClientSize = new Size(width, height); window.Text = "Quinta Essentia Engine ver. 0.03"; //Creating device and swap chain (first filling the description structures) modeDesc = new SlimDX.DXGI.ModeDescription(); modeDesc.Format = DXGI.Format.R8G8B8A8_UNorm; modeDesc.RefreshRate = new Rational(60, 1); modeDesc.Scaling = DXGI.DisplayModeScaling.Unspecified; modeDesc.ScanlineOrdering = DXGI.DisplayModeScanlineOrdering.Unspecified; modeDesc.Width = width; modeDesc.Height = height; DXGI.SampleDescription sampleDesc = new SlimDX.DXGI.SampleDescription(); sampleDesc.Count = 1; sampleDesc.Quality = 0; DXGI.SwapChainDescription swapDesc = new SlimDX.DXGI.SwapChainDescription(); swapDesc.BufferCount = 1; swapDesc.IsWindowed = windowed; swapDesc.Flags = DXGI.SwapChainFlags.AllowModeSwitch; swapDesc.ModeDescription = modeDesc; swapDesc.OutputHandle = window.Handle; swapDesc.SampleDescription = sampleDesc; swapDesc.SwapEffect = DXGI.SwapEffect.Discard; swapDesc.Usage = DXGI.Usage.RenderTargetOutput; //DEBUG FLAG ON!!! REMEMBER THIS! D3D10.Device.CreateWithSwapChain(null, SlimDX.Direct3D10.DriverType.Hardware, SlimDX.Direct3D10.DeviceCreationFlags.Debug, swapDesc, out device, out swapChain); //making and setting the new viewport viewPort = new Viewport(); viewPort.Height = height; viewPort.Width = width; viewPort.MaxZ = 1.0f; viewPort.MinZ = 0.0f; viewPort.X = 0; viewPort.Y = 0; device.Rasterizer.SetViewports(viewPort); //making main render target (it is bind with back buffer of swap chain) using (D3D10.Texture2D temp = swapChain.GetBuffer<D3D10.Texture2D>(0)) { renderTarget = new SlimDX.Direct3D10.RenderTargetView(device, temp); } CreateDepthStencil(); device.OutputMerger.SetTargets(depthStencilView, renderTarget); }
public virtual void Init(D3DHostControl control) { DisposeManaged(); this.control = control; DXGI.SampleDescription sampledesc = new SlimDX.DXGI.SampleDescription(1, 0); DXGI.ModeDescription modedesc = new SlimDX.DXGI.ModeDescription() { Format = DXGI.Format.R8G8B8A8_UNorm, RefreshRate = new Rational(60, 1), Width = control.Width, Height = control.Height }; DXGI.SwapChainDescription swapchaindesc = new SlimDX.DXGI.SwapChainDescription() { ModeDescription = modedesc, SampleDescription = sampledesc, BufferCount = 1, Flags = DXGI.SwapChainFlags.None, IsWindowed = true, OutputHandle = control.Handle, SwapEffect = DXGI.SwapEffect.Discard, Usage = DXGI.Usage.RenderTargetOutput }; D3D.DeviceCreationFlags deviceflags = D3D.DeviceCreationFlags.None; D3D.Device device = null; DXGI.SwapChain swapchain = null; D3D.Device.CreateWithSwapChain(null, D3D.DriverType.Hardware, deviceflags, swapchaindesc, out device, out swapchain); this.Device = device; this.SwapChain = swapchain; SetSize(control.Width, control.Height); SetBlendState(true); }