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.
