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