On the Mac, on the desktop the o/s lets you choose the various resolutions for your desktop display, and it will list some modes as being "Stretched" while others are not. I have a 1024x768 normal aspect which shows as a 4:3 aspect ratio on the widescreen display, with black bars at the sides, and then there is a 1024x768 stretched mode which shows the same number of pixels but at a 16:9 aspect ratio - ie stretched out. All the graphics in that mode are stretched horizontally, if they were originally meant to be 4:3 ratio.
In BlitzMax there is no way to really detect which of the modes in the list of display modes are the stretched ones. Blitz sees the stretched mode just as a 1024x768 mode. There will therefore be two modes in the list, within Blitz, saying 1024x768. I will not know which one is stretched and which one isn't. If I choose the first one I may or may not get the stretched out version.
Since Blitz doesn't seem to have any way to tell what the real aspect ratio is displaying as - ie the aspect of the display MODE, regardless of the projection matrix, it's impossible to know how to properly adjust the projection matrix to show the graphics at their proper intended proportions.
Like someone else said, what it eventually boils down to is that at some point the user has to either use adjustment tools within your app to alter the projection matrix, or they have to enter the physical measurements of the visible display area so that you can calculate the ratio between the display size and the pixel size. It would help considerably if max could tell you which modes are stretched, in a cross-platform way. It would be even better if it could tell you the actual displaying aspect ratio of the physical display, plus the ratio of the hardware e.g. 10:9.
You also need to know if the user's modes are in proportion *to each other*. On my widescreen display, the non-stretched modes are in proportion to each other - 1440x900 has a ratio of 10:9 in terms of pixels, AND consumes physical space which is in the ratio 10:9. A 1024x768 mode has a ratio 4:3 in terms of number of pixels, AND consumes physical space which is in the ratio of 4:3 - ie black bars are added at the sides. So in other words, the shape of the pixels remains the same across display modes. This is nice and easy to handle. As soon as you get stretched modes, OR you have a monitor which fills the same physical space regardless of the number of pixels, OR a monitor where each mode more or less is stretched manually by the user or by the monitor any kind of abnormal physical aspect ratio, then you're getting into some very uncharted territory and pretty much need the physical measurement of the display area in order to calculate the correct projection.
In BlitzMax there is no way to really detect which of the modes in the list of display modes are the stretched ones. Blitz sees the stretched mode just as a 1024x768 mode. There will therefore be two modes in the list, within Blitz, saying 1024x768. I will not know which one is stretched and which one isn't. If I choose the first one I may or may not get the stretched out version.
Since Blitz doesn't seem to have any way to tell what the real aspect ratio is displaying as - ie the aspect of the display MODE, regardless of the projection matrix, it's impossible to know how to properly adjust the projection matrix to show the graphics at their proper intended proportions.
Like someone else said, what it eventually boils down to is that at some point the user has to either use adjustment tools within your app to alter the projection matrix, or they have to enter the physical measurements of the visible display area so that you can calculate the ratio between the display size and the pixel size. It would help considerably if max could tell you which modes are stretched, in a cross-platform way. It would be even better if it could tell you the actual displaying aspect ratio of the physical display, plus the ratio of the hardware e.g. 10:9.
You also need to know if the user's modes are in proportion *to each other*. On my widescreen display, the non-stretched modes are in proportion to each other - 1440x900 has a ratio of 10:9 in terms of pixels, AND consumes physical space which is in the ratio 10:9. A 1024x768 mode has a ratio 4:3 in terms of number of pixels, AND consumes physical space which is in the ratio of 4:3 - ie black bars are added at the sides. So in other words, the shape of the pixels remains the same across display modes. This is nice and easy to handle. As soon as you get stretched modes, OR you have a monitor which fills the same physical space regardless of the number of pixels, OR a monitor where each mode more or less is stretched manually by the user or by the monitor any kind of abnormal physical aspect ratio, then you're getting into some very uncharted territory and pretty much need the physical measurement of the display area in order to calculate the correct projection.