EgtGraphics :
- migliorata gestione oggetti senza visualizzazione - migliorata gestione errori di visualizzazione.
This commit is contained in:
+12
-10
@@ -384,13 +384,12 @@ Scene::DrawGeoObj( const IGdbIterator& iIter, int nPass, const MdStMkCol& siObj)
|
||||
// superficie con visualizzazione standard
|
||||
bool bTwoColors = ( pSTM->GetMaxTFlag() > 0) ;
|
||||
if ( ! bTwoColors) {
|
||||
// Imposto indice blocco corrente
|
||||
if ( pGraphics->SetCurrent( 0))
|
||||
pGraphics->Clear() ;
|
||||
// recupero il materiale
|
||||
Material mMat ;
|
||||
if ( ! iIter.GetCalcMaterial( mMat))
|
||||
mMat.Set( m_colDef) ;
|
||||
// Imposto indice blocco corrente
|
||||
pGraphics->SetCurrent( 0) ;
|
||||
// pulisco
|
||||
pGraphics->Clear() ;
|
||||
// se ci sono triangoli
|
||||
@@ -416,6 +415,8 @@ Scene::DrawGeoObj( const IGdbIterator& iIter, int nPass, const MdStMkCol& siObj)
|
||||
}
|
||||
pGraphics->EndTriangles() ;
|
||||
}
|
||||
else
|
||||
pGraphics->Validate() ;
|
||||
}
|
||||
// altrimenti superficie con due colori
|
||||
else {
|
||||
@@ -448,8 +449,10 @@ Scene::DrawGeoObj( const IGdbIterator& iIter, int nPass, const MdStMkCol& siObj)
|
||||
if ( pGraphics->SetCurrent( j))
|
||||
pGraphics->Clear() ;
|
||||
// se non ci sono triangoli, passo oltre
|
||||
if ( nTri[j] == 0)
|
||||
if ( nTri[j] == 0) {
|
||||
pGraphics->Validate() ;
|
||||
continue ;
|
||||
}
|
||||
// assegno materiali
|
||||
pGraphics->AddColor( cCol[j]) ; // per wireframe
|
||||
pGraphics->AddMaterial( mMat[j].GetAmbient(), mMat[j].GetDiffuse(),
|
||||
@@ -830,6 +833,7 @@ Scene::DrawAlphaSurfVector( void)
|
||||
[]( const AlphaSurf& a, const AlphaSurf&b) { return a.dZmax < b.dZmax ; }) ;
|
||||
|
||||
// eseguo visualizzazione
|
||||
bool bOk = true ;
|
||||
for ( const auto& AlphaSurf : m_vAlphaSurf) {
|
||||
// imposto matrice MODELVIEW
|
||||
double Matrix[OGLMAT_DIM] ;
|
||||
@@ -837,15 +841,13 @@ Scene::DrawAlphaSurfVector( void)
|
||||
glPushMatrix() ;
|
||||
glLoadMatrixd( Matrix) ;
|
||||
// eseguo visualizzazione
|
||||
bool bOk = AlphaSurf.pGraph->Draw( AlphaSurf.nStat, AlphaSurf.nMark, true,
|
||||
AlphaSurf.bSurf, AlphaSurf.nAlpha, AlphaSurf.bShowAux) ;
|
||||
if ( ! AlphaSurf.pGraph->Draw( AlphaSurf.nStat, AlphaSurf.nMark, true,
|
||||
AlphaSurf.bSurf, AlphaSurf.nAlpha, AlphaSurf.bShowAux))
|
||||
bOk = false ;
|
||||
// ripristino matrice
|
||||
glPopMatrix() ;
|
||||
// in caso di errore, esco
|
||||
if ( ! bOk)
|
||||
return false ;
|
||||
}
|
||||
return true ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user