internal void InitializeRenderer() { // setup directx var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(TheGame.Instance.Width, TheGame.Instance.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = TheGame.Instance.FormHandle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput, }; Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, desc, out device, out swapChain); Factory factory = swapChain.GetParent <Factory>(); factory.SetWindowAssociation(TheGame.Instance.FormHandle, WindowAssociationFlags.IgnoreAll); backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0); renderView = new RenderTargetView(device, backBuffer); // setup depth buffer Format depthFormat = Format.D32_Float; Texture2DDescription depthBufferDesc = new Texture2DDescription { ArraySize = 1, BindFlags = BindFlags.DepthStencil, CpuAccessFlags = CpuAccessFlags.None, Format = depthFormat, Height = TheGame.Instance.Height, Width = TheGame.Instance.Width, MipLevels = 1, OptionFlags = ResourceOptionFlags.None, SampleDescription = new SampleDescription(1, 0), Usage = ResourceUsage.Default }; depthBuffer = new Texture2D(device, depthBufferDesc); DepthStencilViewDescription dsViewDesc = new DepthStencilViewDescription { ArraySize = 0, Format = depthFormat, Dimension = DepthStencilViewDimension.Texture2D, MipSlice = 0, Flags = 0, FirstArraySlice = 0 }; depthView = new DepthStencilView(device, depthBuffer, dsViewDesc); DepthStencilStateDescription dsStateDesc = new DepthStencilStateDescription() { IsDepthEnabled = true, IsStencilEnabled = false, DepthWriteMask = DepthWriteMask.All, DepthComparison = Comparison.Less, }; DepthStencilState depthState = DepthStencilState.FromDescription(device, dsStateDesc); // setup render targets device.ImmediateContext.OutputMerger.DepthStencilState = depthState; device.ImmediateContext.OutputMerger.SetTargets(depthView, renderView); device.ImmediateContext.Rasterizer.SetViewports(new Viewport(0, 0, TheGame.Instance.Width, TheGame.Instance.Height, 0.0f, 0.01f)); t.Initialize(1024 * 1024 * 10, device); TileTextures.Instance.Initialize(); }