]> git.mxchange.org Git - simgear.git/blobdiff - simgear/sky/dome.cxx
Preserve initial "state" by careful use of glPushAttrib() and glPopAttrib()
[simgear.git] / simgear / sky / dome.cxx
index 0032bd8fa3ca1f33c840ebaa4e78721b6bd94d5a..0175a56310bacf70b795c8244081afe85476d0bc 100644 (file)
 static int sgSkyDomePreDraw( ssgEntity *e ) {
     /* cout << endl << "Dome Pre Draw" << endl << "----------------" 
         << endl << endl; */
+
+    ssgLeaf *f = (ssgLeaf *)e;
+    if ( f -> hasState () ) f->getState()->apply() ;
+
+    glPushAttrib( GL_DEPTH_BUFFER_BIT | GL_FOG_BIT );
+    // cout << "push error = " << glGetError() << endl;
+
     glDisable( GL_DEPTH_TEST );
     glDisable( GL_FOG );
 
@@ -78,9 +85,10 @@ static int sgSkyDomePreDraw( ssgEntity *e ) {
 static int sgSkyDomePostDraw( ssgEntity *e ) {
     /* cout << endl << "Dome Post Draw" << endl << "----------------" 
         << endl << endl; */
-    glEnable( GL_DEPTH_TEST );
-    glEnable( GL_FOG );
 
+    glPopAttrib();
+    // cout << "pop error = " << glGetError() << endl;
+    
     return true;
 }
 
@@ -507,9 +515,9 @@ bool SGSkyDome::reposition( sgVec3 p, double lon, double lat, double spin ) {
 
     // Rotate to proper orientation
     // printf("  lon = %.2f  lat = %.2f\n",
-    //        FG_Longitude * SGD_RADIANS_TO_DEGREES,
-    //        FG_Latitude * SGD_RADIANS_TO_DEGREES);
-    // xglRotatef( f->get_Longitude() * SGD_RADIANS_TO_DEGREES, 0.0, 0.0, 1.0 );
+    //        lon * SGD_RADIANS_TO_DEGREES,
+    //        lat * SGD_RADIANS_TO_DEGREES);
+    // xglRotatef( lon * SGD_RADIANS_TO_DEGREES, 0.0, 0.0, 1.0 );
     sgSetVec3( axis, 0.0, 0.0, 1.0 );
     sgMakeRotMat4( LON, lon * SGD_RADIANS_TO_DEGREES, axis );