sealed protected override void Draw(GameTime gameTime) { RenderCoordinator.WorkStopwatch.Restart(); var priorIndex = Batch.LifetimeCount; NextFrameTiming.PriorPrimitiveCount = NativeBatch.LifetimePrimitiveCount; NextFrameTiming.PriorCommandCount = NativeBatch.LifetimeCommandCount; // ???? RenderCoordinator.WaitForActiveDraws(); try { OnBeforeDraw(gameTime); var frame = RenderCoordinator.BeginFrame(true); Squared.Threading.Profiling.Superluminal.BeginEventFormat("Build Frame", "SRFrame #{0}", frame.Index, color: 0x1010CF); Draw(gameTime, frame); } finally { Squared.Threading.Profiling.Superluminal.EndEvent(); RenderCoordinator.SynchronousDrawsEnabled = true; RenderCoordinator.WorkStopwatch.Stop(); NextFrameTiming.Draw = RenderCoordinator.WorkStopwatch.Elapsed; NextFrameTiming.BatchCount = (int)(Batch.LifetimeCount - priorIndex); } }
private void Gds_DeviceResetting(object sender, EventArgs e) { if (!RenderCoordinator.WaitForActiveDraws()) { ; } }
sealed protected override void UnloadContent() { if (IsUnloadingContent) { return; } RenderCoordinator.WaitForActiveDraws(); IsUnloadingContent = true; try { OnUnloadContent(); base.UnloadContent(); } finally { IsContentLoaded = false; IsUnloadingContent = false; } }
sealed protected override void LoadContent() { if (IsLoadingContent) { return; } RenderCoordinator.WaitForActiveDraws(); IsLoadingContent = true; try { base.LoadContent(); OnLoadContent(HasEverLoadedContent); HasEverLoadedContent = true; IsContentLoaded = true; } finally { IsLoadingContent = false; } }