Aspect ratio vs. display ratio

Started by
3 comments, last by mark ds 10 years, 2 months ago

Hi all,

Recently esp. laptops display get wider and wider, and I have some problem getting a proper ratio done. I'm using DX8 or DX9 (yes).

My laptop for example lists 800 x 600 as a valid mode for fullscreen. However when I set it the display size doesn't match the mode ratio. The display then stretches the 800 x 600 to look like 1200 x 600 (exaggerated for explanation purposes).

I managed to determine the laptops native mode (which would obviously the ideal resolution for itself, but not for the game). Comparing the ratio of that resolution with all other listed there's NO single other mode that matches the ratio.

What is the common way to work around that?

For a 3d game I'd use native mode and calc black borders on the left/right or top/bottom side to keep the ratio clean.

For a 2d game it's even more annoying. I'd have to find a suitable scaling (a plain factor is required), translate the wanted ratio to the virtual ratio and apply borders as well.

Is that really the way to go about this?

Fruny: Ftagn! Ia! Ia! std::time_put_byname! Mglui naflftagn std::codecvt eY'ha-nthlei!,char,mbstate_t>

Advertisement

I'd say that's the only way. Alternatively changing the amount of the world seen at a time if the game has scrolling, and fill the borders with the extra content instead, or something else that fits the game rather than a black border. For example if you use a vertical 3D FOV and the standard ratio is 4:3 then all wider displays will only show more content on the sides.

So there's two separate issues:

1. There's lots of different aspect ratios and resolutions to handle.

2. Some resolutions have pixel aspect ratios which don't match the display's physical aspect ratio, resulting in pixels that aren't square. In that situation if you rendered a quad with a circle texture on it and rotated it around, it would squash and stretch as it rotated.

It sounds to me that the OP is happy he has solutions for problem #1 (display more where possible or use pillar boxing/letterboxing if you have to), but is mainly concerned with issue #2.

IMO, you can just ignore issue #2. I think pretty much all machines offer resolutions with square pixels, and if your users pick one that doesn't match, then that's their lookout.

I feared as much... Thanks!

Fruny: Ftagn! Ia! Ia! std::time_put_byname! Mglui naflftagn std::codecvt eY'ha-nthlei!,char,mbstate_t>

The best advice is to not change a users screen resolution - whatever they set their desktop to, use. There's nothing worse than a game either crashing and dumping you back to a none native resolution, or one that messes with the monitor colour tables (I use colour managed monitors).

If you need, for whatever reason, to use a different resolution, just render to an appropriately sized texture, and scale up as required for final presentation.

This topic is closed to new replies.

Advertisement