public void Run() { _buff = new RgbaFloat[Width * Height]; _color = new Color32(0, 0, 0); Renderer.InitRender(_color, _buff, RenderType.GouraudShading); Console.Write("加载场景:Scene1..."); Renderer.LoadScene("Scene1"); Console.WriteLine("完成"); Console.Write("编译Shader..."); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); List <string> paths = new List <string>(); foreach (KeyValuePair <string, Material> item in Renderer.Materials) { paths.Add($"Shaders/{item.Value.ShaderName}.cs"); } ShaderGenerator.CompleShader(paths); stopwatch.Stop(); Console.WriteLine($"完成,耗时: {stopwatch.ElapsedMilliseconds} 毫秒"); Renderer.DelegateCollections = ShaderGenerator.DelegateCollections; Renderer.ShaderInformation = ShaderGenerator.ShaderInformation; Renderer.InitMaterials(); GraphicsBackend backend = VeldridStartup.GetPlatformDefaultBackend(); VeldridStartup.CreateWindowAndGraphicsDevice( new WindowCreateInfo(100, 100, (int)(Width * ViewScale), (int)(Height * ViewScale), WindowState.Normal, "Firefly"), new GraphicsDeviceOptions(debug: false, swapchainDepthFormat: null, syncToVerticalBlank: false), backend, out _window, out _graphicsDevice); CreateDeviceResources(); Timer timer1 = new Timer { Interval = 1000, Enabled = true }; timer1.Elapsed += Timer1_Elapsed; while (_window.Exists) { _window.PumpEvents(); if (!_window.Exists) { break; } for (int i = 0; i < _buff.Length; i++) { _buff[i] = new RgbaFloat(); Renderer.DepthBuff[i] = float.MaxValue; } RenderFrame(); //System.Threading.Thread.Sleep(10); } _graphicsDevice.Dispose(); }