public virtual void Draw(GameTime time, SpriteBatch spriteBatch) { lock (Manager.SyncRoot) { bool isBatching = false; SamplingMode lastSampling = SamplingMode.LinearClamp; var transforms = Manager.GetSortedTransformList(); for (int i = 0, count = transforms.Count; i < count; i++) { UITransform transform = transforms[i]; if (transform.IsActive == false || !transform.IsDrawable) { continue; } if (lastSampling != transform.PreferredSampling) { if (isBatching) { spriteBatch.End(); isBatching = false; } lastSampling = transform.PreferredSampling; } if (!isBatching) { spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, GetSamplerState(lastSampling)); isBatching = true; } transform.Draw(time, spriteBatch); } spriteBatch.End(); } }
public static void Draw(this SpriteBatch batch, GameTime time, UITransform transform) { transform.Draw(time, batch); }