示例#1
0
        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);
 }