DGL
https://delphigl.com/forum/

Differences between 4:3 and widescreen resolutions...
https://delphigl.com/forum/viewtopic.php?f=19&t=6932
Seite 1 von 1

Autor:  dpm_dpmartin [ So Sep 23, 2007 11:11 ]
Betreff des Beitrags:  Differences between 4:3 and widescreen resolutions...

Hi,

I am having a bit of an issue with the position of things on the screen when I, or my users, are running in different resolutions. I generally run in 1024x768 (or another 4:3 ratio mode) but I recently got a widescreen monitor and decided to move my resolution to 1280x768 (which I believe is a 16:9 ratio) and I have noticed that some things are not where I'd expect them to be.

This was not unexpected, but I'm not sure about how to get them back to the place I want them - regardless of what resolution is being used by my users. Here are two .jpg images (100K each I'm afraid) that illustrate what I'm talking about. In the code, I set the X location of the Singer Images going down the left hand side as a constant value - they are placed at -0.6 on the X after I have translated to -2 on the Z. They are also a constant size (W = 0.41601 and H = 0.13541) and in any 4:3 resolution (800x600, 1024x768, 1600x1200) they appear on screen as I had intended... at the left, the size they are supposed to be - the picture illustrates:

http://www.hmusiccentre.org.uk/forumimages/1024x768.jpg

When I change to a widescreen resolution, though, my Singer Images are still obviously been told to go to -0.6 on the X - but there are more pixels than there were previously... so they are closer to the centre of X, i.e. 0 - the picture illustrates:

http://www.hmusiccentre.org.uk/forumimages/1280x768.jpg

You will notice that all the text is in the right place - as I'm doing that in orthographic mode obviously. My question is... when using gluPerspective (45,Screen.Width / Screen.Height,1,100); how can I understand what the OpenGL unit limits of my screen actually are when running in different resolutions? I am translating to -2 on the Z plane, if I have, say, a 1280x768 screen what OpenGL unit would be close to the left edge of the screen? Likewise in 1920x1200 and other resolutions. I obviously know how many pixels I have to play with 1024 or 1280 in this case... but I don't yet know how to work out my OpenGL limits. I understand that I won't be able to survive with a constant value of X, i.e. -0.6, for the X position of my Singer Images any more - now that widescreen screens and resolutions are becoming more and more prominent.

// Edit Lossy: Images as links

Autor:  WhiteHunter [ So Sep 23, 2007 16:42 ]
Betreff des Beitrags: 

OK, I don't know whether my ideas work or whether you've tried them already, but I've got a few words to say:
1. 1280x768 is 5:4, 1280x720 would be 16:9

2.
Zitat:
gluPerspective (45,Screen.Width / Screen.Height,1,100);

The second parameter is the aspect ratio, so you could try to simply replace the screen dimensions with "4/3".

3. To answer your actual question, I think if you multiply the Projection matrix with the vector you're displaying, you can tell where on the screen it actually is (at least I hope the result is in the range 0..1 or -1..1 or something like that).

You can find the actually created matrix here: gluPerspective. That matrix is multiplied with the identity matrix via glMultMatrix (no idea how it's done exactly), maybe you should check Google/whatever/the Specs: http://www.opengl.org/registry/doc/glspec21.20061201.pdf
If you multiply your matrix with your vector just like here (first picture below the heading "Anwendung der Matrix...":
http://wiki.delphigl.com/index.php/Tutorial_Nachsitzen#Anwendung_der_Matrix_auf_einen_Vektor
you should have its position on the screen.

4. Another idea that just came to my mind: You could divide your position (maybe only X?) by 4/3 and then multiply it with Screen.Width/Screen.Height. Could be pretty much the same effect as 2.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/