private static void InitialDirectX() { rand = new Random(); player = new Player(20, 20, 25, 0); items = new List <Item>(); // for(int i = 0; i< rand.Next(2,4); i++) int k = rand.Next(1, 2); int j = rand.Next(0, 1); for (int i = 0; i < 5; i++) { Item item = new Item(RandomGenerate.GetCoord((k * i + j) % 9).X, RandomGenerate.GetCoord((k * i + j) % 9).Y); items.Add(item); } exit = new Exit(RandomGenerate.GetCoord(rand.Next(9, 12)).X, RandomGenerate.GetCoord(rand.Next(9, 12)).Y); polygons = new List <Polygon>(); uniqueAngles = new List <float>(); uniqueAnglesNotOnFOV = new List <float>(); intersects = new List <ParamPoint>(); backViewSide = new List <PointF>(); mouseRay = new Ray { Begin = new PointF(player.X, player.Y), Mouse = new PointF(Cursor.Position.X, Cursor.Position.Y) }; raysFOG = new List <Ray>(); raysBACK = new List <Ray>(); // creat form; renderForm = new RenderForm(title); // set windows size renderForm.Size = new System.Drawing.Size(892, 498); renderForm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; // creat swapchain var swapChainDesc = new SwapChainDescription() { BufferCount = 4, Flags = SwapChainFlags.AllowModeSwitch, IsWindowed = true, ModeDescription = new ModeDescription(0, 0, new Rational(60, 1), Format.R8G8B8A8_UNorm), OutputHandle = renderForm.Handle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput }; D3D.FeatureLevel[] featureLevel = { D3D.FeatureLevel.Level_9_3, D3D.FeatureLevel.Level_10_1, D3D.FeatureLevel.Level_11_1 }; Device.CreateWithSwapChain(D3D.DriverType.Hardware, DeviceCreationFlags.BgraSupport, featureLevel, swapChainDesc, out device, out swapChain); Surface backbuffer = Surface.FromSwapChain(swapChain, 0); factory2d = new Factory2D(FactoryType.MultiThreaded); var dpi = factory2d.DesktopDpi; renderTarget = new RenderTarget(factory2d, backbuffer, new RenderTargetProperties() { DpiX = dpi.Width, DpiY = dpi.Height, MinLevel = FeatureLevel.Level_9, PixelFormat = new PixelFormat(Format.R8G8B8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Ignore), Type = RenderTargetType.Default, Usage = RenderTargetUsage.None }); // auto resize windows system renderForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; renderTarget.AntialiasMode = AntialiasMode.Aliased; renderTarget.TextAntialiasMode = TextAntialiasMode.Aliased; using (SharpDX.DirectWrite.Factory textFactory = new SharpDX.DirectWrite.Factory(SharpDX.DirectWrite.FactoryType.Shared)) { textFormat = new Text( textFactory, "MS Sans Serif", SharpDX.DirectWrite.FontWeight.SemiBold, SharpDX.DirectWrite.FontStyle.Normal, SharpDX.DirectWrite.FontStretch.Medium, 16.0f); } renderForm.Click += RenderForm_Click; renderForm.KeyUp += RenderForm_KeyUp; renderForm.KeyDown += RenderForm_KeyDown; renderForm.Load += RenderForm_Load; renderForm.MouseMove += RenderForm_MouseMove; }