In XNA I am using a spritebatch to render a board. I have created a camera class which can provide me a view and projection matrix. Currently I am supplying the view matrix to my sprite batch when I call begin.
I can get the view matrix to correctly move everything around and do some zooming in and out. My problem is that I want to zoom in on a specific point (for now the center of the screen) but currently zooming just zooms in on the coordinate 0,0.
Here is how I am constructing the view matrix;
_ViewMatrix =
Matrix.CreateTranslation(
new Vector3(
(-_Position.X + _Width * _Zoom / 2),
(-_Position.Y + _Height * _Zoom / 2),
0) ) *
Matrix.CreateScale(new Vector3(_Zoom, _Zoom, 1));
How could this be altered to make it scale correctly relative to the given point. Later I will probably want to zoom to the mouse position, but if someone has a simple example I'm sure I can work out how to adapt it.