EgtGraphics 1.6v8 :
- migliorata velocità di visualizzazione oggetti con triangoli su nuova e vecchia grafica.
This commit is contained in:
+18
-9
@@ -241,19 +241,28 @@ ObjNewGraphics::AddTriangle( const Triangle3d& Tria, const TriFlags3d& TFlags, c
|
||||
return false ;
|
||||
// recupero il conteggio dei vertici
|
||||
int nCount = m_ngaList.back().m_nCount ;
|
||||
// emetto i flag, le normali e i vertici del triangolo + aggiorno bbox
|
||||
// emetto i vertici, le normali e i flag del triangolo
|
||||
#pragma pack( push, 1)
|
||||
struct VnfBuf {
|
||||
Vert3f v3V ;
|
||||
Vert3f v3N ;
|
||||
unsigned char cFlag ;
|
||||
} ;
|
||||
#pragma pack( pop)
|
||||
VnfBuf Buffer[3] ;
|
||||
for ( int i = 0 ; i < 3 ; ++ i) {
|
||||
Vert3f v3V( Tria.GetP( i)) ;
|
||||
glBufferSubData( GL_ARRAY_BUFFER, nCount * SIZEVNF, SIZEV3F, &v3V) ;
|
||||
m_b3Loc.Add( Tria.GetP( i)) ;
|
||||
Vert3f v3N( TNrms.vtN[i]) ;
|
||||
glBufferSubData( GL_ARRAY_BUFFER, nCount * SIZEVNF + SIZEV3F, SIZEV3F, &v3N) ;
|
||||
unsigned char cFlag = ( TFlags.bFlag[i] ? 1 : 0) ;
|
||||
glBufferSubData( GL_ARRAY_BUFFER, nCount * SIZEVNF + 2 * SIZEV3F, SIZEFLAG, &cFlag) ;
|
||||
++ nCount ;
|
||||
Buffer[i].v3V = Tria.GetP( i) ;
|
||||
Buffer[i].v3N = TNrms.vtN[i] ;
|
||||
Buffer[i].cFlag = ( TFlags.bFlag[i] ? 1 : 0) ;
|
||||
}
|
||||
glBufferSubData( GL_ARRAY_BUFFER, nCount * SIZEVNF, 3 * SIZEVNF, Buffer) ;
|
||||
// aggiorno il conteggio
|
||||
nCount += 3 ;
|
||||
m_ngaList.back().m_nCount = nCount ;
|
||||
// aggiorno bbox
|
||||
for ( int i = 0 ; i < 3 ; ++ i)
|
||||
m_b3Loc.Add( Tria.GetP( i)) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user