]> git.mxchange.org Git - simgear.git/commitdiff
Add support for NVidia cards with a broken OpenGL implementation
authorehofman <ehofman>
Fri, 15 Aug 2003 17:19:22 +0000 (17:19 +0000)
committerehofman <ehofman>
Fri, 15 Aug 2003 17:19:22 +0000 (17:19 +0000)
simgear/scene/sky/oursun.cxx

index 2024cbe116198548574e07b5479a6e2cad18d623..034676dcf5f184c17a9d8804c70a24be94ded3eb 100644 (file)
 #include "sphere.hxx"
 #include "oursun.hxx"
 
+// FIXME: This should not be needed, but at this time (08/15/2003)
+//        certain NVidia drivers don't seem to implement
+//        fgPushAttrib(FG_FOG_BIT) properly. The result is that
+//        there is not fog when looking at the sun.
+#ifndef SG_PROPER_FOG_SUPPORT
+static float curFogDensity;
+#endif
+
 
 // Set up sun rendering call backs
 static int sgSunOrbPreDraw( ssgEntity *e ) {
@@ -87,6 +95,10 @@ static int sgSunHaloPreDraw( ssgEntity *e ) {
     ssgLeaf *f = (ssgLeaf *)e;
     if ( f -> hasState () ) f->getState()->apply() ;
 
+#ifndef SG_PROPER_FOG_SUPPORT
+    glGetFloatv( GL_FOG_DENSITY, &curFogDensity );
+#endif
+
     glPushAttrib( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_FOG_BIT );
     // cout << "push error = " << glGetError() << endl;
 
@@ -105,6 +117,10 @@ static int sgSunHaloPostDraw( ssgEntity *e ) {
     glPopAttrib();
     // cout << "pop error = " << glGetError() << endl;
 
+#ifndef SG_PROPER_FOG_SUPPORT
+    glFogf( GL_FOG_DENSITY, curFogDensity );
+#endif
+
     // glEnable( GL_DEPTH_TEST );
     // glEnable( GL_FOG );