EgtGraphics 1.5d2 :
- prima implementazione dello shading.
This commit is contained in:
+44
-3
@@ -53,6 +53,8 @@ Scene::Scene( void)
|
||||
// Sfondo
|
||||
m_colBackTop.Set( 128, 128, 128) ;
|
||||
m_colBackBottom.Set( 128, 128, 128) ;
|
||||
// Modalità di visualizzazione
|
||||
m_nShowMode = SM_WIREFRAME ;
|
||||
// GeomData
|
||||
m_pGeomDB = nullptr ;
|
||||
m_colDef.Set( 0, 0, 0) ;
|
||||
@@ -512,6 +514,9 @@ Scene::Background( void)
|
||||
// disabilito lo Zdepth
|
||||
glDisable( GL_DEPTH_TEST) ;
|
||||
|
||||
// disabilito illuminazione
|
||||
glDisable( GL_LIGHTING) ;
|
||||
|
||||
// imposto riempimento poligoni
|
||||
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL) ;
|
||||
|
||||
@@ -632,14 +637,50 @@ Scene::Draw( void)
|
||||
// imposto la dimensione standard dei punti
|
||||
glPointSize( 3) ;
|
||||
|
||||
// imposto disegno wireframe anche per poligoni
|
||||
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE) ;
|
||||
// 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) ;
|
||||
break ;
|
||||
case SM_HIDDENLINE :
|
||||
break ;
|
||||
case SM_SHADING :
|
||||
// imposto disegno shading per poligoni
|
||||
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL) ;
|
||||
// imposto tipo shading
|
||||
glShadeModel( GL_SMOOTH) ;
|
||||
// imposto illuminazione
|
||||
float LightAmbient[] = { 0.25f, 0.25f, 0.25f, 1.0f} ;
|
||||
float LightStd[] = { 0.8f, 0.8f, 0.8f, 0.8f} ;
|
||||
float Light0Pos[] = { 0.8f, 0.9f, 1.2f, 0.0f} ;
|
||||
float Light1Pos[] = { -0.9f, -0.7f, 0.6f, 0.0f} ;
|
||||
glLightfv( GL_LIGHT0, GL_AMBIENT, LightAmbient) ;
|
||||
glLightfv( GL_LIGHT0, GL_DIFFUSE, LightStd) ;
|
||||
glLightfv( GL_LIGHT0, GL_SPECULAR, LightStd) ;
|
||||
glLightfv( GL_LIGHT0, GL_POSITION, Light0Pos) ;
|
||||
glEnable( GL_LIGHT0) ;
|
||||
glLightfv( GL_LIGHT1, GL_AMBIENT, LightAmbient) ;
|
||||
glLightfv( GL_LIGHT1, GL_DIFFUSE, LightStd) ;
|
||||
glLightfv( GL_LIGHT1, GL_SPECULAR, LightStd) ;
|
||||
glLightfv( GL_LIGHT1, GL_POSITION, Light1Pos) ;
|
||||
glEnable( GL_LIGHT1) ;
|
||||
glEnable( GL_LIGHTING) ;
|
||||
// provvisorio
|
||||
glEnable( GL_COLOR_MATERIAL) ;
|
||||
glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE) ;
|
||||
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)
|
||||
// aggiungo disegni diretti (senza test Zbuffer e con poligoni riempiti)
|
||||
glDisable( GL_DEPTH_TEST) ;
|
||||
glDisable( GL_LIGHTING) ;
|
||||
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL) ;
|
||||
DrawWinRect() ;
|
||||
|
||||
// aggiorno
|
||||
|
||||
Reference in New Issue
Block a user