EgtGraphics 1.5d5 :
- Gestione materiali - Facce con front e back diversificati per materiale - HiddenLine.
This commit is contained in:
+56
-21
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user