Sure, I can explain it a bit more.
First off, yes, I draw all my sprites at 1x. They are not scaled up at all. It's the game engine's job to do any desired scaling.
So to make things simple, let's say my "native" resolution (i.e. when the pixel art is completely unscaled) is 320x180, and I want to display the game in a 1280x720 window. I first render all my sprites to a RenderTarget2D, and then I draw the RenderTarget2D to the screen scaled up by a factor of 4.
Here's how I construct the RenderTarget2D:
renderTarget = new RenderTarget2D(GraphicsDevice,
When drawing sprites to the render target, you can use whatever parameters you want for
spriteBatch.Draw(), but you want to draw them at 1x scale. So if you have a 32x32 spaceship texture, you could draw it to the renderTarget like:
new Rectangle(spaceshipX, spaceshipY, spaceshipTexture.Width, spaceshipTexture.Height),
new Rectangle(0, 0, spaceshipTexture.Width, spaceshipTexture.Height)
Finally, when I draw the RenderTarget2D to the game's window (after drawing all the sprites to the renderTarget), it would look like this:
spriteBatch.Draw(renderTarget, new Rectangle(0, 0, 1280, 720), Color.White);
Notice how the renderTarget is 320x180 pixels, but when it's drawn to the screen, it's being stretched to 1280x720. Also, the
SamplerState.PointClamp argument is important because it gives you a nice crisp pixel art look, by default it would look like a blurry mess.
I'm not always great at explaining things but hopefully this clarified things a bit for you, haha.