]> git.mxchange.org Git - simgear.git/commitdiff
Preserve initial "state" by careful use of glPushAttrib() and glPopAttrib()
authorcurt <curt>
Tue, 22 Aug 2000 02:40:13 +0000 (02:40 +0000)
committercurt <curt>
Tue, 22 Aug 2000 02:40:13 +0000 (02:40 +0000)
being careful to manually call getState()->apply() before the glPushAttrib()
so that the ssg state handling mechanism doesn't get derailed accidentally.

simgear/sky/dome.cxx
simgear/sky/moon.cxx
simgear/sky/oursun.cxx
simgear/sky/stars.cxx

index 74790bb030643761d85686f774bfe4abbce8675c..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;
 }
 
index c16e7e871275df351935e9cc63ace12b3f9f2f64..c5310fd4b88c38fdb79126223f9bc57950b42cd3 100644 (file)
 static int sgMoonOrbPreDraw( ssgEntity *e ) {
     /* cout << endl << "Moon orb pre draw" << endl << "----------------" 
         << endl << endl; */
+
+    ssgLeaf *f = (ssgLeaf *)e;
+    if ( f -> hasState () ) f->getState()->apply() ;
+
+    glPushAttrib( GL_COLOR_BUFFER_BIT | GL_ENABLE_BIT );
+    // cout << "push error = " << glGetError() << endl;
+
     glDisable( GL_DEPTH_TEST );
     glDisable( GL_FOG );
     glBlendFunc ( GL_SRC_ALPHA, GL_ONE ) ;
@@ -55,10 +62,13 @@ static int sgMoonOrbPreDraw( ssgEntity *e ) {
 static int sgMoonOrbPostDraw( ssgEntity *e ) {
     /* cout << endl << "Moon orb post draw" << endl << "----------------" 
         << endl << endl; */
-    glEnable( GL_DEPTH_TEST );
-    glEnable( GL_FOG );
-    glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
+    // glEnable( GL_DEPTH_TEST );
+    // glEnable( GL_FOG );
+    // glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
 
+    glPopAttrib();
+    // cout << "pop error = " << glGetError() << endl;
+    
     /* test
     glDisable( GL_LIGHTING );
     glDisable( GL_CULL_FACE );
@@ -73,6 +83,13 @@ static int sgMoonOrbPostDraw( ssgEntity *e ) {
 static int sgMoonHaloPreDraw( ssgEntity *e ) {
     /* cout << endl << "Moon halo pre draw" << endl << "----------------" 
         << endl << endl; */
+
+    ssgLeaf *f = (ssgLeaf *)e;
+    if ( f -> hasState () ) f->getState()->apply() ;
+
+    glPushAttrib( GL_DEPTH_BUFFER_BIT | GL_FOG_BIT | GL_COLOR_BUFFER_BIT);
+    cout << "push error = " << glGetError() << endl;
+
     glDisable( GL_DEPTH_TEST );
     glDisable( GL_FOG );
     glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
@@ -83,9 +100,12 @@ static int sgMoonHaloPreDraw( ssgEntity *e ) {
 static int sgMoonHaloPostDraw( ssgEntity *e ) {
     /* cout << endl << "Moon halo post draw" << endl << "----------------" 
         << endl << endl; */
-    glEnable( GL_DEPTH_TEST );
-    glEnable( GL_FOG );
-    glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
+    // glEnable( GL_DEPTH_TEST );
+    // glEnable( GL_FOG );
+    // glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
+    
+    glPopAttrib();
+    cout << "pop error = " << glGetError() << endl;
 
     return true;
 }
index 915f7b28c33ecf8fadf34b3e7a803322d016512a..2cac096c3124540c7757e824535af64796197dc1 100644 (file)
 static int sgSunOrbPreDraw( ssgEntity *e ) {
     /* cout << endl << "Sun orb 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 );
 
@@ -52,8 +59,12 @@ static int sgSunOrbPreDraw( ssgEntity *e ) {
 static int sgSunOrbPostDraw( ssgEntity *e ) {
     /* cout << endl << "Sun orb post draw" << endl << "----------------" 
         << endl << endl; */
-    glEnable( GL_DEPTH_TEST );
-    glEnable( GL_FOG );
+
+    glPopAttrib();
+    // cout << "pop error = " << glGetError() << endl;
+
+    // glEnable( GL_DEPTH_TEST );
+    // glEnable( GL_FOG );
 
     return true;
 }
@@ -61,6 +72,13 @@ static int sgSunOrbPostDraw( ssgEntity *e ) {
 static int sgSunHaloPreDraw( ssgEntity *e ) {
     /* cout << endl << "Sun halo pre draw" << endl << "----------------" 
         << endl << endl; */
+
+    ssgLeaf *f = (ssgLeaf *)e;
+    if ( f -> hasState () ) f->getState()->apply() ;
+
+    glPushAttrib( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_FOG_BIT );
+    // cout << "push error = " << glGetError() << endl;
+
     glDisable( GL_DEPTH_TEST );
     glDisable( GL_FOG );
     glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
@@ -71,8 +89,12 @@ static int sgSunHaloPreDraw( ssgEntity *e ) {
 static int sgSunHaloPostDraw( ssgEntity *e ) {
     /* cout << endl << "Sun halo post draw" << endl << "----------------" 
         << endl << endl; */
-    glEnable( GL_DEPTH_TEST );
-    glEnable( GL_FOG );
+
+    glPopAttrib();
+    // cout << "pop error = " << glGetError() << endl;
+
+    // glEnable( GL_DEPTH_TEST );
+    // glEnable( GL_FOG );
 
     return true;
 }
index 4dd4225a98081d18bd39ecc60c581d63b9644a16..cff2a7ddbd8c34006ec86591b7fb46edc464cf40 100644 (file)
@@ -47,9 +47,15 @@ FG_USING_STD(endl);
 static int sgStarPreDraw( ssgEntity *e ) {
     /* cout << endl << "Star pre draw" << endl << "----------------" 
         << endl << endl; */
+
+    ssgLeaf *f = (ssgLeaf *)e;
+    if ( f -> hasState () ) f->getState()->apply() ;
+
+    glPushAttrib( GL_DEPTH_BUFFER_BIT | GL_FOG_BIT );
+
     glDisable( GL_DEPTH_TEST );
     glDisable( GL_FOG );
-    glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
+    // glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
 
     return true;
 }
@@ -57,8 +63,11 @@ static int sgStarPreDraw( ssgEntity *e ) {
 static int sgStarPostDraw( ssgEntity *e ) {
     /* cout << endl << "Star post draw" << endl << "----------------" 
         << endl << endl; */
-    glEnable( GL_DEPTH_TEST );
-    glEnable( GL_FOG );
+
+    glPopAttrib();
+
+    // glEnable( GL_DEPTH_TEST );
+    // glEnable( GL_FOG );
 
     return true;
 }