From other frameworks I know methods for easy ordering sprites within a spritebatch (to determine if a sprite has to be drawn in front or behind another sprite). For example in MonoGame/XNA this is called Sprite.depth
or Pyglet has its OrderedGroups
.
But I cannot find anything like that in libgdx. I've read that libgdx' scene2d has something like that but I don't want to use that as I use a entity system (ashley) and want to keep rendering separeted from the other logic.
What is the appropriate way to set the draw-order of libgdx sprites?
Answer
You are correct that libGDX doesn't contain any sort of built-in support for rendering sprites in a certain order. (If it's there, I haven't seen it, and I've been using libGDX for a number of years.)
What I do is create a SpriteComponent
class that wraps the Texture
object and emits x
, y
, and z
attributes.
Then in my draw method, I sort all SpriteComponents
by z
(ascendingly) and draw them -- so lower-Z items draw first, then higher-Z items on top.
No comments:
Post a Comment