Search code examples
c#matrixxnamonogame

Monogame XNA transform matrix for a single object?


I have read a few tutorials explaining transform matrices for XNA/Monogame. The problem is that these matrices are applied to

SpriteBatch.Begin(...matrix);

This means that all Draw code will be transformed. How do I apply a transformation matrix to a single drawable object? In my case I want to transform a scrolling background so that it automatically wraps.

SpriteBatch.Draw(.. this has no transform matrix parameter?);

Solution

  • If you want to use a specific spritebatch begin call for some drawing calls only, you can start a new one as needed.

    for example

    SpriteBatch.Begin(...matrix);
    
    //Draw stuff with matrix
    
    SpriteBatch.End();
    
    SpriteBatch.Begin();
    
    //do the rest of the drawing
    
    SpriteBatch.End();
    

    this is commonly used to draw a bunch of objects with a "camera" matrix at appropraite position, scale and rotation, then another spritebatch.Begin is called to draw the flat, static UI on top, etc.