Saturday, December 8, 2018

How to find the window size in XNA


I just wanted to know if there was a way to find out the size of the window in XNA. I don't want to set it to a specific size; I would like to know what dimensions it currently displays as automatically. Is there a way to find this information out?


I realize I probably should have found this information out (or set it myself manually) before working on the game, but I'm a novice and am now hoping to work within the dimensions I have already become invested in. Thanks!



Answer



Here are your options:


To get the back-buffer size use:


GraphicsDevice.PresentationParameters.Bounds (for a rectangle) or BackBufferWidth and BackBufferHeight.


You want the back-buffer size if you're doing stuff like setting viewports, taking screenshots, etc.



To get the Viewport, use:


GraphicsDevice.Viewport.Bounds (for a rectangle) or Width and Height.


The size of the viewport is what you want to use when you're actually rendering stuff. Any coordinates you pass to SpriteBatch are in pixel-aligned client space in terms of the viewport: (0,0) for the top left pixel to (width-1,height-1) for the bottom right. If you're doing 3D stuff, projection space goes from (-1,-1) in the bottom left of the viewport to (1,1) in the top right.


You can adjust the size and position of the viewport on screen (for doing effects like split-screen). So, while it is initialised to the size of the back-buffer, it is not necessarily always the same.


If you're doing interface layout stuff, particularly if you will run on the Xbox 360, be aware of Viewport.TitleSafeArea. This tells you what region is definitely visible on screens that may cut off some of the border.


If, for some reason, you're actually working with the game window itself, use Game.GameWindow.ClientBounds.


No comments:

Post a Comment

Simple past, Present perfect Past perfect

Can you tell me which form of the following sentences is the correct one please? Imagine two friends discussing the gym... I was in a good s...