Working on an isometric 2D world and just set up a render pipeline. the thing was to figure out an efficient way to organize the render commands with as few draw calls as possible, since the order requires taking diagonal rows from back to front. The solution was to make an array of render queues. The way the thing now works is you just specify the x,y, and z of the block in question, in game space, and pass the sprite RenderIsometric(SR_Sprite * Sprite, int X, int Y, int Z)
, the coordinates get transformed to isometric and the command then gets pushed to its appropriate render queue which gets looped on and the render calls get batched. in the example above there is a total of 10 render calls, the minimum amount necessary to render the sprites in the scene with appropriate alpha blending.
Caution: this demonstration wobbles.