I've computed a Viewport that is fair in size (a proper aspect ratio to the given device) and then I calculate my ScaleMatrix like so:
scaleMatrix = Matrix.CreateScale( (float) GraphicsDevice.Viewport.Width/virtualWidth, (float) GraphicsDevice.Viewport.Width/virtualWidth, 1f);
That by itself, works great. The game scales and everything works fine. However, I'm not trying to add translation to track my character and some things are going a bit wonky.
I'm trying to construct my full transform like so:
_transform = Matrix.CreateTranslation(new Vector3(-pos.X, -pos.Y, 0))*scale * Matrix.CreateTranslation(new Vector3(_viewPortWidth * 0.5f, _viewPortHeight * 0.5f, 0));
Am I doing something wrong? The results are not what I expected; the position is the position of the character. Before i added the scaling code, something like this worked for translation.
Here's an image to demonstrate what I want, sorry for the excessive size: =
Here's a screenshot of what I currently get:
I'm looking to find a way to achieve the first result with automatic scaling to the maximum viewport size.