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();
 }