public virtual void Run() { Renderer.Start(); if (!Renderer.Asynchronous) { bool AbortMainLoop = false; RenderProgramEventArgs args = new RenderProgramEventArgs(); while (!AbortMainLoop) { OnSyncRenderStart(args); if (args.AbortExecution) { break; } Renderer.ProcessEvents(); if (Renderer.TargetWindow?.IsExiting ?? true || !Renderer.IsRunning) { break; } Renderer.AdvanceFrame(); OnSyncRenderEnd(args); if (args.AbortExecution) { break; } } } }
protected virtual void OnSyncRenderEnd(RenderProgramEventArgs e) { SyncRenderEnd?.Invoke(this, e); }