EgtGraphics 1.5c3 :

- aggiunta visualizzaziono di punti, vettori e frame
- aggiunti NewGrAtom per gestione potenziata e con colori di VAO/VBO
- aggiunti OldGrAtom per displaylist proprietarie in modo OpenGL immediato.
This commit is contained in:
Dario Sassi
2014-03-11 22:23:04 +00:00
parent 80a2a43cdc
commit f55619cc8b
10 changed files with 361 additions and 74 deletions
+57 -14
View File
@@ -21,6 +21,8 @@
#include "/EgtDev/Include/EGkFrame3d.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
#include "/EgtDev/Include/EGkGdbIterator.h"
#include "/EgtDev/Include/EGkGeoVector3d.h"
#include "/EgtDev/Include/EGkGeoPoint3d.h"
#include "/EgtDev/Include/EGkCurve.h"
using namespace std ;
@@ -146,26 +148,67 @@ Scene::DrawGeoObj( IGeoObj* pGeoObj)
pGraphics->SetScene( this) ;
pGeoObj->SetObjGraphics( pGraphics) ;
}
// leggo il tipo di oggetto geometrico
int nGeoType = pGeoObj->GetType() ;
// se curva
if ( ( nGeoType & GEO_CURVE) != 0) {
// recupero la curva
const ICurve* pCurve = GetCurve( pGeoObj) ;
if ( pCurve == nullptr)
return false ;
// se la grafica associata non è valida la ricalcolo
ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pGeoObj) ;
if ( ! pGraphics->IsValid()) {
// se la grafica associata non è valida la ricalcolo
ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pGeoObj) ;
if ( ! pGraphics->IsValid()) {
// leggo il tipo di oggetto geometrico
int nGeoType = pGeoObj->GetType() ;
// se vettore
if ( nGeoType == GEO_VECT3D) {
// recupero il vettore
const IGeoVector3d* pVector = GetGeoVector3d( pGeoObj) ;
if ( pVector == nullptr)
return false ;
// calcolo la grafica
PolyLine PL ;
pVector->GetDrawWithArrowHead( 0.1, PL) ;
pGraphics->Clear() ;
pGraphics->AddPolyLine( PL) ;
}
// se punto
else if ( nGeoType == GEO_PNT3D) {
// recupero il punto
const IGeoPoint3d* pPoint = GetGeoPoint3d( pGeoObj) ;
if ( pPoint == nullptr)
return false ;
// calcolo la grafica
pGraphics->Clear() ;
pGraphics->AddPoint( pPoint->GetPoint()) ;
}
// se riferimento
else if ( nGeoType == GEO_FRAME3D) {
// recupero il riferimento
const IGeoFrame3d* pFrame = GetGeoFrame3d( pGeoObj) ;
if ( pFrame == nullptr)
return false ;
// aggiorno la grafica
PolyLine plX, plY, plZ ;
pFrame->GetDrawWithArrowHeads( 10, 0.1, plX, plY, plZ) ;
pGraphics->Clear() ;
pGraphics->AddColor( RED) ;
pGraphics->AddPolyLine( plX) ;
pGraphics->AddColor( GREEN) ;
pGraphics->AddPolyLine( plY) ;
pGraphics->AddColor( BLUE) ;
pGraphics->AddPolyLine( plZ) ;
}
// se curva
else if ( ( nGeoType & GEO_CURVE) != 0) {
// recupero la curva
const ICurve* pCurve = GetCurve( pGeoObj) ;
if ( pCurve == nullptr)
return false ;
// calcolo la grafica
PolyLine PL ;
pCurve->ApproxWithLines( 0.1, 5, PL) ;
pGraphics->Clear() ;
pGraphics->AddPolyLine( PL) ;
}
// visualizzo la grafica associata
pGraphics->Draw() ;
}
return true ;
// visualizzo la grafica associata
return pGraphics->Draw() ;
}
//----------------------------------------------------------------------------