EgtGraphics 1.5d2 :

- prima implementazione dello shading.
This commit is contained in:
Dario Sassi
2014-04-04 09:40:34 +00:00
parent 82f1791391
commit cb34a7b71a
7 changed files with 81 additions and 10 deletions
+8 -3
View File
@@ -155,7 +155,8 @@ ObjNewGraphics::StartTriangles( int nNum)
return false ;
}
glBindBuffer( GL_ARRAY_BUFFER, nVboId) ;
glBufferData( GL_ARRAY_BUFFER, 3 * nNum * SIZEV3F, NULL, GL_STATIC_DRAW) ;
// 3 float per le coordinate e 3 per la normale
glBufferData( GL_ARRAY_BUFFER, 6 * nNum * SIZEV3F, NULL, GL_STATIC_DRAW) ;
// aggiungo i dati in lista
AddVerts( GL_TRIANGLES, 0, nVaoId, nVboId) ;
// dichiaro modo triangoli
@@ -177,7 +178,9 @@ ObjNewGraphics::AddTriangle( const Triangle3d& Tria)
// emetto i vertici del triangolo
for ( int i = 0 ; i < 3 ; ++ i) {
Vert3f v3V( Tria.GetP( i)) ;
glBufferSubData( GL_ARRAY_BUFFER, nCount * SIZEV3F, SIZEV3F, &v3V) ;
glBufferSubData( GL_ARRAY_BUFFER, 2 * nCount * SIZEV3F, SIZEV3F, &v3V) ;
Vert3f v3N( Tria.GetN()) ;
glBufferSubData( GL_ARRAY_BUFFER, ( 2 * nCount + 1) * SIZEV3F, SIZEV3F, &v3N) ;
++ nCount ;
}
// aggiorno il conteggio
@@ -195,8 +198,10 @@ ObjNewGraphics::EndTriangles( void)
if ( m_nCurrMode != GL_TRIANGLES)
return false ;
// termino il modo triangoli
glVertexPointer( 3, GL_FLOAT, 0, ((void*)(0))) ;
glVertexPointer( 3, GL_FLOAT, 2 * SIZEV3F, ((void*)(0))) ;
glEnableClientState( GL_VERTEX_ARRAY) ;
glNormalPointer( GL_FLOAT, 2 * SIZEV3F, ((void*)( 1 * SIZEV3F))) ;
glEnableClientState( GL_NORMAL_ARRAY) ;
glBindVertexArray( 0) ;
// dichiaro modalità standard
m_nCurrMode = GL_NONE ;