locked
Handling multiple resolutions

    Question

  • I'm currently looking at how to handle all of the different possible screen resolutions, and I'm thinking that I'm going to just render everything to a 1920x1080 texture buffer and then scale (while preserving aspect ratio) to the screen's actual resolution from there.

    Obviously, with a 4:3 resolution, the sides will get chopped off, but I can put non-critical content in the unsafe areas.  And also, it's not the most efficient approach for lower resolution targets, but I'd rather have decent high res and lower performance for low res, than blurry high res.

    My question is: is this a usable approach?  Are there any hidden gotchas that I should be aware of when using a 1920x1080 texture buffer (e.g., is this going to cause problems/crashes on hardware that only supports up to 1024x768?).

    Obviously, it'd be great if I could custom build for all resolutions, but given current resources, that isn't a viable option (I create 2-D pixel based games).

    Thanks for your thoughts and feedback!

    Monday, August 06, 2012 4:36 PM

Answers

  • For performance and quality, you want to use a backbuffer the same size as the display surface. In order to scale performance of your application, you may want to use a smaller backbuffer and then let the present scale it up. The increased performance of having fewer pixels to fill may cover the cost of the additional scaling. For traditional Win32 desktop applications, the usual method of "fill-rate" scaling is to set a lower display resolution (respecting the user's choice of aspect ratio: see below) and creating a backbuffer to match. Changing the display resolution is not an option for Windows Store apps (aka Metro style apps), but you can control the size of your backbuffer.

    I would defintely not recommend always rendering at 1920x1080 even if the display resolution is much smaller. That's throwing a lot of performance out the window and probably be unplayably slow on tablet and some laptop systems. This approach works for consoles because there is dedicated hardware to deal with the various scaling issues and you have fixed-performance hardware--neither of these assumptions is true for Windows PCs.

    Take some time to view the GDC 2012 presentation Developing Metro Style Games on the Full Range of Windows 8 Devices

    Note to properly handle widescreen displays, make sure you choose a resolution for your backbuffer that has the same aspect ratio as the display resolution (4:3, 16:10 or 16:9). See Games for Windows Technical Requirements TR 1.5 for a discussion of aspect ratios.


    Tuesday, August 14, 2012 9:35 PM

All replies

  • It seems that this function does not support in metro.

    http://msdn.microsoft.com/en-us/library/windows/desktop/bb174382(v=vs.85).aspx


    NEU_ShieldEdge

    Tuesday, August 07, 2012 8:44 AM
  • Of course DX9 is not supported.

    Scaling is not a good idea, I think.


    C++ DX11

    Sunday, August 12, 2012 8:38 AM
  • For performance and quality, you want to use a backbuffer the same size as the display surface. In order to scale performance of your application, you may want to use a smaller backbuffer and then let the present scale it up. The increased performance of having fewer pixels to fill may cover the cost of the additional scaling. For traditional Win32 desktop applications, the usual method of "fill-rate" scaling is to set a lower display resolution (respecting the user's choice of aspect ratio: see below) and creating a backbuffer to match. Changing the display resolution is not an option for Windows Store apps (aka Metro style apps), but you can control the size of your backbuffer.

    I would defintely not recommend always rendering at 1920x1080 even if the display resolution is much smaller. That's throwing a lot of performance out the window and probably be unplayably slow on tablet and some laptop systems. This approach works for consoles because there is dedicated hardware to deal with the various scaling issues and you have fixed-performance hardware--neither of these assumptions is true for Windows PCs.

    Take some time to view the GDC 2012 presentation Developing Metro Style Games on the Full Range of Windows 8 Devices

    Note to properly handle widescreen displays, make sure you choose a resolution for your backbuffer that has the same aspect ratio as the display resolution (4:3, 16:10 or 16:9). See Games for Windows Technical Requirements TR 1.5 for a discussion of aspect ratios.


    Tuesday, August 14, 2012 9:35 PM
  • Thanks!  Very helpful presentation.  It answered some of my other questions as well.
    Monday, August 20, 2012 7:27 PM