EgtGraphics 1.5d5 :

- Gestione materiali
- Facce con front e back diversificati per materiale
- HiddenLine.
This commit is contained in:
Dario Sassi
2014-04-23 13:03:45 +00:00
parent 401b66cc0e
commit f7a63375df
9 changed files with 260 additions and 123 deletions
+56 -21
View File
@@ -1,13 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : ObjOldGraphics.cpp Data : 10.02.14 Versione : 1.5b1
// File : ObjOldGraphics.cpp Data : 23.04.14 Versione : 1.5d5
// Contenuto : Implementazione della classe grafica di un oggetto geometrico.
//
//
//
// Modifiche : 10.02.14 DS Creazione modulo.
//
// 23.04.14 DS Agg. gestione materiali.
//
//----------------------------------------------------------------------------
@@ -50,6 +50,27 @@ ObjOldGraphics::AddColor( const Color& colC)
return AddColor( colC.GetRed(), colC.GetGreen(), colC.GetBlue(), colC.GetAlpha()) ;
}
//----------------------------------------------------------------------------
bool
ObjOldGraphics::AddMaterial( const Color& colAmb, const Color& colDiff, const Color& colSpec)
{
return AddMaterial( OgAtom::MAT_A, colAmb.GetRed(), colAmb.GetGreen(),
colAmb.GetBlue(), colDiff.GetAlpha()) &&
AddMaterial( OgAtom::MAT_D, colDiff.GetRed(), colDiff.GetGreen(),
colDiff.GetBlue(), colDiff.GetAlpha()) &&
AddMaterial( OgAtom::MAT_S, colSpec.GetRed(), colSpec.GetGreen(),
colSpec.GetBlue(), colDiff.GetAlpha()) &&
AddMaterial( OgAtom::MAT_SH, 128 * colSpec.GetAlpha(), 0, 0, 0) ;
}
//----------------------------------------------------------------------------
bool
ObjOldGraphics::AddBackMaterial( const Color& colAmbDiff)
{
return AddMaterial( OgAtom::MAT_B, colAmbDiff.GetRed(), colAmbDiff.GetGreen(),
colAmbDiff.GetBlue(), colAmbDiff.GetAlpha()) ;
}
//----------------------------------------------------------------------------
bool
ObjOldGraphics::AddPoint( const Point3d& ptP)
@@ -154,21 +175,36 @@ ObjOldGraphics::Draw( int nStat, int nMark)
OGALIST::iterator iIter ;
for ( iIter = m_ogaList.begin() ; iIter != m_ogaList.end() ; ++ iIter) {
switch ( iIter->m_nType) {
case OldGrAtom::START :
case OgAtom::START :
glBegin( iIter->m_nMode) ;
break ;
case OldGrAtom::NORMAL :
glNormal3f( iIter->m_fX, iIter->m_fY, iIter->m_fZ) ;
break ;
case OldGrAtom::VERT :
glVertex3f( iIter->m_fX, iIter->m_fY, iIter->m_fZ) ;
break ;
case OldGrAtom::COLOR :
glColor4f( iIter->m_fRed, iIter->m_fGreen, iIter->m_fBlue, iIter->m_fAlpha) ;
break ;
case OldGrAtom::END :
case OgAtom::END :
glEnd() ;
break ;
case OgAtom::VERT :
glVertex3fv( iIter->m_fVal) ;
break ;
case OgAtom::NORMAL :
glNormal3fv( iIter->m_fVal) ;
break ;
case OgAtom::COLOR :
glColor4fv( iIter->m_fVal) ;
break ;
case OgAtom::MAT_A :
glMaterialfv( GL_FRONT, GL_AMBIENT, iIter->m_fVal) ;
break ;
case OgAtom::MAT_D :
glMaterialfv( GL_FRONT, GL_DIFFUSE, iIter->m_fVal) ;
break ;
case OgAtom::MAT_S :
glMaterialfv( GL_FRONT, GL_SPECULAR, iIter->m_fVal) ;
break ;
case OgAtom::MAT_SH :
glMaterialf( GL_FRONT, GL_SHININESS, iIter->m_fVal[0]) ;
break ;
case OgAtom::MAT_B :
glMaterialfv( GL_BACK, GL_AMBIENT_AND_DIFFUSE, iIter->m_fVal) ;
break ;
}
}
@@ -186,18 +222,17 @@ ObjOldGraphics::Draw( int nStat, int nMark)
OGALIST::iterator iIter ;
for ( iIter = m_ogaList.begin() ; iIter != m_ogaList.end() ; ++ iIter) {
switch ( iIter->m_nType) {
case OldGrAtom::START :
case OgAtom::START :
glBegin( iIter->m_nMode) ;
break ;
case OldGrAtom::VERT :
glVertex3f( iIter->m_fX, iIter->m_fY, iIter->m_fZ) ;
break ;
case OldGrAtom::COLOR :
// si usa il colore di marcatura
break ;
case OldGrAtom::END :
case OgAtom::END :
glEnd() ;
break ;
case OgAtom::VERT :
glVertex3fv( iIter->m_fVal) ;
break ;
// non si imposta la normale sono solo curve
// non si impostano i colori, si usa quello di marcatura
}
}
}