예제 #1
0
        public void OnRenderFrame(FrameEventArgs e)
        {
            double time = (DateTime.UtcNow - engineStartTime).TotalSeconds;

            windowHandler.SetWindowTitle($"Vector Engine");

            RenderEngine.BufferFlush();
            RenderEngine.SetTimeData(time);

            entryPoint.OnRender(e.Time);

            RenderEngine.RenderAll();

            windowHandler.SwapBuffers();

            if (entryPoint.UseVSync && e.Time < 1000d / entryPoint.TargetFrameRate)
            {
                Thread.Sleep((int)Math.Round(1000 / entryPoint.TargetFrameRate - e.Time));
            }
            else if (!entryPoint.UseVSync && e.Time < 1000d / entryPoint.MaxFrameRate)
            {
                Thread.Sleep((int)Math.Round(1000 / entryPoint.MaxFrameRate - e.Time));
            }
        }