X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fscene%2Fsky%2Fsky.cxx;h=990d50bc3cbf86d5755098b9a0400f15f40adde1;hb=344610e24b1aea35dd80c680bf56b31202451dd8;hp=cdb61abea4063e6119372edb9c1de046681c5d4c;hpb=092901b9eac33c01562f0b33771f11d8f9d0719e;p=simgear.git diff --git a/simgear/scene/sky/sky.cxx b/simgear/scene/sky/sky.cxx index cdb61abe..990d50bc 100644 --- a/simgear/scene/sky/sky.cxx +++ b/simgear/scene/sky/sky.cxx @@ -179,6 +179,7 @@ void SGSky::preDraw( float alt ) { int i; // check where we are relative to the cloud layers + in_cloud = -1; for ( i = 0; i < (int)cloud_layers.size(); ++i ) { float asl = cloud_layers[i]->getElevation_m(); float thickness = cloud_layers[i]->getThickness_m(); @@ -196,22 +197,19 @@ void SGSky::preDraw( float alt ) { } // determine rendering order - int pos = 0; - while ( pos < (int)cloud_layers.size() && - alt > cloud_layers[pos]->getElevation_m()) + cur_layer_pos = 0; + while ( cur_layer_pos < (int)cloud_layers.size() && + alt > cloud_layers[cur_layer_pos]->getElevation_m()) { - ++pos; + ++cur_layer_pos; } // draw the cloud layers that are above us, top to bottom - - glDepthMask( GL_FALSE ); - for ( i = (int)cloud_layers.size() - 1; i >= 0; --i ) { + for ( i = (int)cloud_layers.size() - 1; i >= cur_layer_pos; --i ) { if ( i != in_cloud ) { cloud_layers[i]->draw(); } } - glDepthMask( GL_TRUE ); } @@ -219,30 +217,13 @@ void SGSky::preDraw( float alt ) { // oapaque elements of your scene. void SGSky::postDraw( float alt ) { - // if we are closer than this to a cloud layer, don't draw clouds - static const float slop = 5.0; - - int i; - - // determine rendering order - int pos = 0; - while ( pos < (int)cloud_layers.size() && - alt > cloud_layers[pos]->getElevation_m()) - { - ++pos; - } - // draw the cloud layers that are below us, bottom to top - glDepthMask( GL_FALSE ); - for ( i = 0; i < (int)cloud_layers.size(); ++i ) { + for ( int i = 0; i < cur_layer_pos; ++i ) { if ( i != in_cloud ) { cloud_layers[i]->draw(); } } - glDepthMask( GL_TRUE ); - - in_cloud = -1; } void