protected override void OnLoad() { GL.ClearColor(Color.LightSkyBlue); GL.Enable(EnableCap.DepthTest); GL.LoadBindings(new GLFWBindingsContext()); GL.Enable(EnableCap.CullFace); GL.CullFace(CullFaceMode.Back); CursorVisible = true; CursorGrabbed = true; VSync = VSyncMode.On; ShaderManager.LoadShaders(); RenderBufferManager.CreateRenderBuffers(); InputManager.LoadContexts(); base.OnLoad(); new GameManager(); CameraManager.AspectRatio = ClientSize.X / (float)ClientSize.Y; InputManager.GetAction("Debug", "DrawSceneGraph").Callback += () => { GameObjectManager.DrawSceneGraph(); }; InputManager.GetAction("Menu", "Quit").Callback += () => { Close(); }; InputManager.GetAction("Debug", "ToggleWireframe").Callback += () => { isWireframe = !isWireframe; if (isWireframe) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); } else { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); } }; }
//Executed vsync times per second. protected override void OnRenderFrame(FrameEventArgs e) { time += e.Time; framesPerSecond++; if (time >= 1) { Title = $"{framesPerSecond}FPS - {1000 / (double)framesPerSecond}ms/f"; framesPerSecond = 0; time = 0; } EngineManager.OnUpdate((float)e.Time); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); foreach (RenderBuffer buffer in RenderBufferManager.GetBuffers()) { buffer.Render(); } GL.Flush(); SwapBuffers(); base.OnRenderFrame(e); }
protected override void OnClosing(CancelEventArgs e) { RenderBufferManager.RemoveAllBuffers(); ShaderManager.RemoveAllShaders(); }