diff --git a/EgtGraphics.rc b/EgtGraphics.rc index 553dda1..704a7d3 100644 Binary files a/EgtGraphics.rc and b/EgtGraphics.rc differ diff --git a/SceneBasic.cpp b/SceneBasic.cpp index 05d4203..72ccd36 100644 --- a/SceneBasic.cpp +++ b/SceneBasic.cpp @@ -485,15 +485,17 @@ Scene::Background( void) if ( ! MakeCurrent()) return false ; - // imposto il colore dello sfondo - glClearColor( m_BackTop.GetRed(), m_BackTop.GetGreen(), m_BackTop.GetBlue(), m_BackTop.GetAlpha()) ; + // cancello lo Zbuffer + glClearDepth( 1) ; + glClear( GL_DEPTH_BUFFER_BIT) ; - // cancello - glClear( GL_COLOR_BUFFER_BIT) ; - - // se lo sfondo ha un colore uniforme, ho finito - if ( m_BackTop == m_BackBottom) + // se lo sfondo ha un colore uniforme + if ( m_BackTop == m_BackBottom) { + // imposto il colore dello sfondo e lo cancello + glClearColor( m_BackTop.GetRed(), m_BackTop.GetGreen(), m_BackTop.GetBlue(), m_BackTop.GetAlpha()) ; + glClear( GL_COLOR_BUFFER_BIT) ; return true ; + } // rendo neutre matrici di proiezione e di modello/vista glMatrixMode( GL_PROJECTION) ; @@ -501,6 +503,9 @@ Scene::Background( void) glMatrixMode( GL_MODELVIEW) ; glLoadIdentity() ; + // disabilito lo Zdepth + glDisable( GL_DEPTH_TEST) ; + // disegno lo sfondo con due colori if ( ! m_bNewWay) { glBegin( GL_TRIANGLE_STRIP) ; @@ -599,21 +604,26 @@ Scene::Prepare( void) bool Scene::Draw( void) { - // sistemo lo sfondo + // sistemo lo sfondo e lo Zbuffer if ( ! Background()) return false ; - // imposto + // imposto la camera if ( ! Prepare()) return false ; + // imposto l'utilizzo dello Zbuffer + glDepthFunc( GL_LESS) ; + glEnable( GL_DEPTH_TEST) ; + // colore di default glColor4f( 1, 1, 1, 1) ; // disegno le geometrie del DB DrawGroup( GDB_ID_ROOT) ; - // aggiungo disegni diretti + // aggiungo disegni diretti (senza test Zbuffer) + glDisable( GL_DEPTH_TEST) ; DrawWinRect() ; // aggiorno diff --git a/SceneGeom.cpp b/SceneGeom.cpp index 63dca22..8707cd7 100644 --- a/SceneGeom.cpp +++ b/SceneGeom.cpp @@ -108,6 +108,12 @@ Scene::DrawGroup( int nId) IGeoObj* pGeoObj = pIter->GetGeoObj() ; if ( pGeoObj == nullptr) return false ; + // provvisorio per colore + Color cCol ; + if ( pIter->GetColor( cCol)) + glColor3f( cCol.GetRed(), cCol.GetGreen(), cCol.GetBlue()) ; + else + glColor3f( 1, 1, 1) ; // lo disegno if ( ! DrawGeoObj( pGeoObj)) return false ;