Shawn Hargreaves Blog
SpriteSortMode.Texture sorts sprites by texture.
SpriteSortMode.BackToFront and SpriteSortMode.FrontToBack do the obvious thing.
But what is the difference between the Immediate and Deferred sorting modes, and why should you care?
modes both draw sprites in the same order that you call Draw, without
any sorting. Performance will be good if you draw lots of sprites using
the same texture in a row, and not so good if each sprite uses a
different texture: see part 1 for the reason why.
all the sort modes except Immediate, calling Begin just sets some flags
on the SpriteBatch object. When you call Draw, the sprite is stored in
an internal buffer. All the real work happens when you call End:
Because all the work happens in the End call, you can have many
SpriteBatch instances on the go at the same time without any conflicts.
You could even do other things like drawing 3D models at the same time
as you are adding sprites to a SpriteBatch.
works quite differently. It sets all the sprite renderstates inside the
Begin call. Each time you call Draw, it checks whether the new sprite
uses the same texture as the previous one. If they are the same, it
just adds the new sprite to the internal buffer. Otherwise it flushes the
existing contents of the buffer to the graphics card, then starts a new
buffer using the new texture.
One implication of this is that
you can only use one SpriteSortMode.Immediate batch at a time. Because
it is setting renderstates and drawing polygons as it goes along, you
will get conflicts if you try to do anything else with the graphics
card (including drawing 3D models) inside an immediate mode SpriteBatch.
more interesting implication is that because SpriteSortMode.Immediate
sets its renderstates inside the Begin call, if you were to change
these renderstates immediately after calling Begin, the sprites will be
drawn using your custom state. You can do many interesting things with
I really like this series of articles.
Are there any source codes available for the concepts explained in the last 5 bullets (for XNA, I mean)?
ya how about moving these to video format on the xna site.