-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've checked in a fix that addresses the non 4:3 problem and also fixes the 
osgviewer
distortion issue. It turned out to be pretty hairy. Please give the patch a try.

Thanks,
Tim

dave perry wrote:
| dave perry wrote:
|> Tim Moore wrote:
|>
|>> -----BEGIN PGP SIGNED MESSAGE-----
|>> Hash: SHA1
|>>
|>> dave perry wrote:
|>> | Patch adds a member function to FGRenderer class that returns the
|>> | current aspect ratio.  Uses this in place of 4.0/3.0 in setFOV and
|>> | setNearFar.
|>> |
|>> | The diff follows:
|>> |
|>> This seems a little confusing / confused. In setFOV, why would you ignore 
the w argument?
|>> Now, I happen to know that /sim/startup/xsize is set to the value of w 
somewhere in
|>> one of the callers, but this is not clear at all. Can we untangle this a 
bit?
|>>
|>>
|> In setFOV, you can use w/h for the aspect ratio.  But in setNearFar just
|> below this, w and h are not defined in that context, so you need to get
|> the real current aspect ratio from some where.
| Hi Tim,
| The following patch uses w/h for the aspect ratio in setFOV and then
| uses xsize/ysize (from /sim/startup) for the aspect ratio in
| setNearFar.  This accomplishes using the actual aspect ratio in place of
| 4.0/3.0 without having to add a new member function to the FGRenderer class.
|
| Please commit this patch.  It fixes the same issue as the last patch and
| the behavior is the same as described on my last note.
|
| renderer.cxx patch follows:
|
| Index: renderer.cxx
| ===================================================================
| RCS file: /var/cvs/FlightGear-0.9/source/src/Main/renderer.cxx,v
| retrieving revision 1.100
| diff -p -u -r1.100 renderer.cxx
| --- renderer.cxx    6 Jan 2008 23:03:20 -0000    1.100
| +++ renderer.cxx    21 Jan 2008 15:48:33 -0000
| @@ -872,7 +872,7 @@ void FGRenderer::setFOV( float w, float
|      fov_width = w;
|      fov_height = h;
|      osgViewer::Viewer* viewer = globals->get_renderer()->getViewer();
| -    viewer->getCamera()->setProjectionMatrixAsPerspective(fov_height,
| 4.0/3.0,
| +    viewer->getCamera()->setProjectionMatrixAsPerspective(fov_height, w/h,
|                                                            fov_near,
| fov_far);
|  }
|
| @@ -885,8 +885,10 @@ void FGRenderer::setNearFar( float n, fl
|  n = 0.1;
|      fov_near = n;
|      fov_far = f;
| +    float xsize = fgGetInt("/sim/startup/xsize");
| +    float ysize = fgGetInt("/sim/startup/ysize");
|      osgViewer::Viewer* viewer = globals->get_renderer()->getViewer();
| -    viewer->getCamera()->setProjectionMatrixAsPerspective(fov_height,
| 4.0/3.0,
| +    viewer->getCamera()->setProjectionMatrixAsPerspective(fov_height,
| xsize/ysize,
|                                                            fov_near,
| fov_far);
|  }
|
| Thanks,
| Dave
|
| -------------------------------------------------------------------------
| This SF.net email is sponsored by: Microsoft
| Defy all challenges. Microsoft(R) Visual Studio 2008.
| http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
| _______________________________________________
| Flightgear-devel mailing list
| Flightgear-devel@lists.sourceforge.net
| https://lists.sourceforge.net/lists/listinfo/flightgear-devel
|

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFHmi61eDhWHdXrDRURArIhAJ0RaSO65Put7i7FBJpFpyt+xji8lwCfQfQS
TzdeT9WEZnBVeRtcfhOEitw=
=u9Db
-----END PGP SIGNATURE-----

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to