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
+26 -9
View File
@@ -640,16 +640,33 @@ Scene::Draw( void)
// impostazioni dipendenti dalla modalità di visualizzazione
switch ( m_nShowMode) {
case SM_WIREFRAME :
// imposto disegno wireframe anche per poligoni
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE) ;
// disabilito illuminazione
glDisable( GL_LIGHTING) ;
// imposto disegno wireframe anche per poligoni
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE) ;
// disegno le geometrie del DB in una sola passata
DrawGroup( GDB_ID_ROOT, 1, MdStMk( GDB_MD_STD, GDB_ST_ON, GDB_MK_OFF)) ;
break ;
case SM_HIDDENLINE :
// disabilito illuminazione
glDisable( GL_LIGHTING) ;
// disegno le geometrie del DB
// prima passata per superfici solo per aggiornare Zbuffer (poligoni riempiti e offsettati)
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL) ;
glEnable( GL_POLYGON_OFFSET_FILL) ;
glPolygonOffset( 1.0, 1.0) ;
glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE) ;
DrawGroup( GDB_ID_ROOT, 1, MdStMk( GDB_MD_STD, GDB_ST_ON, GDB_MK_OFF)) ;
glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE) ;
glDisable( GL_POLYGON_OFFSET_FILL) ;
// seconda passata per tutto in forma 0dim e curve
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE) ;
DrawGroup( GDB_ID_ROOT, 2, MdStMk( GDB_MD_STD, GDB_ST_ON, GDB_MK_OFF)) ;
break ;
case SM_SHADING :
// imposto disegno shading per poligoni
// imposto disegno shading per poligoni con davanti e dietro diversificati
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL) ;
glLightModeli( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE) ;
// imposto tipo shading
glShadeModel( GL_SMOOTH) ;
// imposto illuminazione
@@ -667,16 +684,16 @@ Scene::Draw( void)
glLightfv( GL_LIGHT1, GL_SPECULAR, LightStd) ;
glLightfv( GL_LIGHT1, GL_POSITION, Light1Pos) ;
glEnable( GL_LIGHT1) ;
// disegno le geometrie del DB
// prima passata per superfici con illuminazione abilitata
glEnable( GL_LIGHTING) ;
// provvisorio
glEnable( GL_COLOR_MATERIAL) ;
glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE) ;
DrawGroup( GDB_ID_ROOT, 1, MdStMk( GDB_MD_STD, GDB_ST_ON, GDB_MK_OFF)) ;
// seconda passata per 0dim e curve con illuminazione disabilitata
glDisable( GL_LIGHTING) ;
DrawGroup( GDB_ID_ROOT, 2, MdStMk( GDB_MD_STD, GDB_ST_ON, GDB_MK_OFF)) ;
break ;
}
// disegno le geometrie del DB
DrawGroup( GDB_ID_ROOT, GDB_MD_STD, GDB_ST_ON, GDB_MK_OFF) ;
// aggiungo disegni diretti (senza test Zbuffer e con poligoni riempiti)
glDisable( GL_DEPTH_TEST) ;
glDisable( GL_LIGHTING) ;