diff --git a/src/Cockpit/hud.cxx b/src/Cockpit/hud.cxx index 57c2264e8..c08e67d0e 100644 --- a/src/Cockpit/hud.cxx +++ b/src/Cockpit/hud.cxx @@ -40,7 +40,7 @@ #include #include -#include +#include #include // FGFontCache #include
@@ -338,27 +338,31 @@ void fgUpdateHUD( osg::State* state ) { void fgUpdateHUDVirtual(osg::State* state) { + using namespace osg; FGViewer* view = globals->get_current_view(); // Standard fgfs projection, with essentially meaningless clip // planes (we'll map the whole HUD plane to z=-1) glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); - gluPerspective(view->get_v_fov(), 1/view->get_aspect_ratio(), 0.1, 10); + Matrixf proj + = Matrixf::perspective(view->get_v_fov(), 1/view->get_aspect_ratio(), + 0.1, 10); + glLoadMatrix(proj.ptr()); glMatrixMode(GL_MODELVIEW); glPushMatrix(); - glLoadIdentity(); // Standard fgfs view direction computation - float lookat[3]; + Vec3f lookat; lookat[0] = -sin(SG_DEGREES_TO_RADIANS * view->getHeadingOffset_deg()); lookat[1] = tan(SG_DEGREES_TO_RADIANS * view->getPitchOffset_deg()); lookat[2] = -cos(SG_DEGREES_TO_RADIANS * view->getHeadingOffset_deg()); if (fabs(lookat[1]) > 9999) lookat[1] = 9999; // FPU sanity - gluLookAt(0, 0, 0, lookat[0], lookat[1], lookat[2], 0, 1, 0); + Matrixf mv = Matrixf::lookAt(Vec3f(0.0, 0.0, 0.0), lookat, + Vec3f(0.0, 1.0, 0.0)); + glLoadMatrix(mv.ptr()); // Map the -1:1 square to a 55.0x41.25 degree wide patch at z=1. // This is the default fgfs field of view, which the HUD files are @@ -391,10 +395,11 @@ void fgUpdateHUDVirtual(osg::State* state) void fgUpdateHUD( osg::State* state, GLfloat x_start, GLfloat y_start, GLfloat x_end, GLfloat y_end ) { + using namespace osg; glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(x_start, x_end, y_start, y_end); + Matrixf proj = Matrixf::ortho2D(x_start, x_end, y_start, y_end); + glLoadMatrix(proj.ptr()); glMatrixMode(GL_MODELVIEW); glPushMatrix(); diff --git a/src/Cockpit/hud_rwy.cxx b/src/Cockpit/hud_rwy.cxx index 2be152523..e884c7cfb 100644 --- a/src/Cockpit/hud_rwy.cxx +++ b/src/Cockpit/hud_rwy.cxx @@ -32,8 +32,7 @@ #include #include
-#include - +#include // int x, int y, int width, int height, float scale_data, bool working) @@ -134,8 +133,9 @@ void runway_instr::draw() //Calculate the 2D points via gluProject int result = GL_TRUE; for (int i = 0; i < 6; i++) { - result = gluProject(points3d[i][0], points3d[i][1], points3d[i][2], mm, - pm, view, &points2d[i][0], &points2d[i][1], &points2d[i][2]); + result = simgear::project(points3d[i][0], points3d[i][1], points3d[i][2], + mm, pm, view, + &points2d[i][0], &points2d[i][1], &points2d[i][2]); } //set the line width based on our distance from the runway setLineWidth(); @@ -239,7 +239,8 @@ bool runway_instr::drawLine(const sgdVec3& a1, const sgdVec3& a2, const sgdVec3& sgdVec3 newPt; sgdCopyVec3(newPt, a1); sgdAddVec3(newPt, vec); - if (gluProject(newPt[0], newPt[1], newPt[2], mm, pm, view, &p2[0], &p2[1], &p2[2]) + if (simgear::project(newPt[0], newPt[1], newPt[2], mm, pm, view, + &p2[0], &p2[1], &p2[2]) && (p2[2] > 0 && p2[2] < 1.0)) { boundPoint(p1, p2); glBegin(GL_LINES); @@ -255,7 +256,8 @@ bool runway_instr::drawLine(const sgdVec3& a1, const sgdVec3& a2, const sgdVec3& sgdVec3 newPt; sgdCopyVec3(newPt, a2); sgdAddVec3(newPt, vec); - if (gluProject(newPt[0], newPt[1], newPt[2], mm, pm, view, &p1[0], &p1[1], &p1[2]) + if (simgear::project(newPt[0], newPt[1], newPt[2], mm, pm, view, + &p1[0], &p1[1], &p1[2]) && (p1[2] > 0 && p1[2] < 1.0)) { boundPoint(p2, p1); glBegin(GL_LINES); diff --git a/src/Cockpit/panel.cxx b/src/Cockpit/panel.cxx index 9c39626ee..8cc268788 100644 --- a/src/Cockpit/panel.cxx +++ b/src/Cockpit/panel.cxx @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -273,6 +274,7 @@ FGPanel::update (double dt) void FGPanel::update (osg::State& state, GLfloat winx, GLfloat winw, GLfloat winy, GLfloat winh) { + using namespace osg; // Calculate accelerations // and jiggle the panel accordingly // The factors and bounds are just @@ -284,12 +286,13 @@ FGPanel::update (osg::State& state, GLfloat winx, GLfloat winw, GLfloat winy, GL glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); + Matrixf proj; if ( _flipx->getBoolValue() ) { - gluOrtho2D(winx + winw, winx, winy + winh, winy); /* up side down */ + proj = Matrixf::ortho2D(winx + winw, winx, winy + winh, winy); /* up side down */ } else { - gluOrtho2D(winx, winx + winw, winy, winy + winh); /* right side up */ + proj = Matrixf::ortho2D(winx, winx + winw, winy, winy + winh); /* right side up */ } + glLoadMatrix(proj.ptr()); glMatrixMode(GL_MODELVIEW); glPushMatrix(); diff --git a/src/Instrumentation/HUD/HUD.cxx b/src/Instrumentation/HUD/HUD.cxx index d37f28a3d..4ea539db3 100644 --- a/src/Instrumentation/HUD/HUD.cxx +++ b/src/Instrumentation/HUD/HUD.cxx @@ -186,27 +186,31 @@ void HUD::draw(osg::State&) void HUD::draw3D() { + using namespace osg; FGViewer* view = globals->get_current_view(); // Standard fgfs projection, with essentially meaningless clip // planes (we'll map the whole HUD plane to z=-1) glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); - gluPerspective(view->get_v_fov(), 1.0 / view->get_aspect_ratio(), 0.1, 10); + Matrixf proj + = Matrixf::perspective(view->get_v_fov(), 1/view->get_aspect_ratio(), + 0.1, 10); + glLoadMatrix(proj.ptr()); glMatrixMode(GL_MODELVIEW); glPushMatrix(); - glLoadIdentity(); // Standard fgfs view direction computation - float lookat[3]; + Vec3f lookat; lookat[0] = -sin(SG_DEGREES_TO_RADIANS * view->getHeadingOffset_deg()); lookat[1] = tan(SG_DEGREES_TO_RADIANS * view->getPitchOffset_deg()); lookat[2] = -cos(SG_DEGREES_TO_RADIANS * view->getHeadingOffset_deg()); if (fabs(lookat[1]) > 9999) lookat[1] = 9999; // FPU sanity - gluLookAt(0, 0, 0, lookat[0], lookat[1], lookat[2], 0, 1, 0); + Matrixf mv = Matrixf::lookAt(Vec3f(0.0, 0.0, 0.0), lookat, + Vec3f(0.0, 1.0, 0.0)); + glLoadMatrix(mv.ptr()); // Map the -1:1 square to a 55.0x41.25 degree wide patch at z=1. // This is the default fgfs field of view, which the HUD files are @@ -236,10 +240,11 @@ void HUD::draw3D() void HUD::draw2D(GLfloat x_start, GLfloat y_start, GLfloat x_end, GLfloat y_end) { + using namespace osg; glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(x_start, x_end, y_start, y_end); + Matrixf proj = Matrixf::ortho2D(x_start, x_end, y_start, y_end); + glLoadMatrix(proj.ptr()); glMatrixMode(GL_MODELVIEW); glPushMatrix(); diff --git a/src/Instrumentation/HUD/HUD_runway.cxx b/src/Instrumentation/HUD/HUD_runway.cxx index 450f118a3..a31d0ff60 100644 --- a/src/Instrumentation/HUD/HUD_runway.cxx +++ b/src/Instrumentation/HUD/HUD_runway.cxx @@ -25,7 +25,7 @@ #include #include -#include +#include #include
#include @@ -129,8 +129,9 @@ void HUD::Runway::draw() //Calculate the 2D points via gluProject int result = GL_TRUE; for (int i = 0; i < 6; i++) { - result = gluProject(_points3d[i][0], _points3d[i][1], _points3d[i][2], _mm, - _pm, _view, &_points2d[i][0], &_points2d[i][1], &_points2d[i][2]); + result = simgear::project(_points3d[i][0], _points3d[i][1], _points3d[i][2], + _mm, _pm, _view, + &_points2d[i][0], &_points2d[i][1], &_points2d[i][2]); } //set the line width based on our distance from the runway setLineWidth(); @@ -229,7 +230,8 @@ bool HUD::Runway::drawLine(const sgdVec3& a1, const sgdVec3& a2, const sgdVec3& sgdVec3 newPt; sgdCopyVec3(newPt, a1); sgdAddVec3(newPt, vec); - if (gluProject(newPt[0], newPt[1], newPt[2], _mm, _pm, _view, &p2[0], &p2[1], &p2[2]) + if (simgear::project(newPt[0], newPt[1], newPt[2], _mm, _pm, _view, + &p2[0], &p2[1], &p2[2]) && (p2[2] > 0 && p2[2] < 1.0)) { boundPoint(p1, p2); glBegin(GL_LINES); @@ -245,7 +247,8 @@ bool HUD::Runway::drawLine(const sgdVec3& a1, const sgdVec3& a2, const sgdVec3& sgdVec3 newPt; sgdCopyVec3(newPt, a2); sgdAddVec3(newPt, vec); - if (gluProject(newPt[0], newPt[1], newPt[2], _mm, _pm, _view, &p1[0], &p1[1], &p1[2]) + if (simgear::project(newPt[0], newPt[1], newPt[2], _mm, _pm, _view, + &p1[0], &p1[1], &p1[2]) && (p1[2] > 0 && p1[2] < 1.0)) { boundPoint(p2, p1); glBegin(GL_LINES); diff --git a/utils/Modeller/texture.cxx b/utils/Modeller/texture.cxx index 3c747e60c..75c720a25 100644 --- a/utils/Modeller/texture.cxx +++ b/utils/Modeller/texture.cxx @@ -17,7 +17,7 @@ # include #endif -#include +#include #include #include @@ -95,6 +95,7 @@ SGTexture::bind() void SGTexture::resize(unsigned int width, unsigned int height) { + using namespace osg; GLfloat aspect; // Make sure that we don't get a divide by zero exception @@ -110,10 +111,10 @@ SGTexture::resize(unsigned int width, unsigned int height) // Go to the projection matrix, this gets modified by the perspective // calulations glMatrixMode(GL_PROJECTION); - glLoadIdentity(); // Do the perspective calculations - gluPerspective(45.0, aspect, 1.0, 400.0); + Matrixf proj = Matrixf::perspective(45.0, aspect, 1.0, 400.0); + glLoadMatrix(proj.ptr()); // Return to the modelview matrix glMatrixMode(GL_MODELVIEW);