public virtual void Draw() {
Debug.Assert(Initialized);
IsDirty = false;
if (_resized) {
Resize();
_resized = false;
}
if (!_stopwatch.IsRunning) {
_stopwatch.Start();
}
var elapsed = Elapsed;
OnTick(elapsed - _previousElapsed);
Tick?.Invoke(this, new TickEventArgs(elapsed - _previousElapsed));
_previousElapsed = elapsed;
if (_frameMonitor.Tick()) {
OnPropertyChanged(nameof(FramesPerSecond));
}
DrawInner();
if (SpriteInitialized) {
DrawSprites();
}
_swapChain?.Present(SyncInterval ? 1 : 0, PresentFlags.None);
}