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:

? renderer.diff
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    16 Jan 2008 22:41:59 -0000
@@ -864,6 +864,11 @@ static float fov_height = 42.0;
 static float fov_near = 1.0;
 static float fov_far = 1000.0;
 
+float FGRenderer::getAspectRatio() {
+    float xsize = fgGetInt("/sim/startup/xsize");
+    float ysize = fgGetInt("/sim/startup/ysize");
+    return xsize/ysize;
+}
 
 /** FlightGear code should use this routine to set the FOV rather than
  *  calling the ssg routine directly
@@ -872,7 +877,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, 
FGRenderer::getAspectRatio(),
                                                           fov_near, 
fov_far);
 }
 
@@ -886,7 +891,7 @@ n = 0.1;
     fov_near = n;
     fov_far = f;
     osgViewer::Viewer* viewer = globals->get_renderer()->getViewer();
-    viewer->getCamera()->setProjectionMatrixAsPerspective(fov_height, 
4.0/3.0,
+    viewer->getCamera()->setProjectionMatrixAsPerspective(fov_height, 
FGRenderer::getAspectRatio(),
                                                           fov_near, 
fov_far);
 }
 
Index: renderer.hxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/Main/renderer.hxx,v
retrieving revision 1.17
diff -p -u -r1.17 renderer.hxx
--- renderer.hxx    21 Nov 2007 20:51:50 -0000    1.17
+++ renderer.hxx    16 Jan 2008 22:41:59 -0000
@@ -32,6 +32,8 @@ public:
     void splashinit();
     void init();
 
+    static float getAspectRatio();
+
     static void resize(int width, int height );
 
     // calling update( refresh_camera_settings = false ) will not

-------------------------------------------------------------------------
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