EgtGraphics :

- aggiunta gestione primitiva delle textures.
This commit is contained in:
Dario Sassi
2015-09-28 16:13:42 +00:00
parent a2c5908a7e
commit b839d7ac36
8 changed files with 406 additions and 1 deletions
+54 -1
View File
@@ -414,8 +414,61 @@ Scene::DrawGeoObj( const IGdbIterator& iIter, int nPass, const MdStMkCol& siObj)
glLoadName( iIter.GetId()) ;
}
// eventuale texture
string sTxtName ;
if ( iIter.GetInfo( "!TXT", sTxtName)) {
Frame3d frRef ;
iIter.GetGlobFrame( frRef) ;
GLuint texName ;
double dTextDimS = 400 ;
double dTextDimT = 200 ;
m_TextMgr.GetTextureData( sTxtName, texName, dTextDimS, dTextDimT) ;
glEnable( GL_TEXTURE_2D) ;
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE) ;
glBindTexture( GL_TEXTURE_2D, texName) ;
GLfloat PlaneS[4] ;
GLfloat PlaneT[4] ;
Point3d ptOri(-4009.4378,-2415.5604,0) ;
ptOri.ToLoc( frRef) ;
Vector3d vtX = X_AX ;
vtX.ToLoc( frRef) ;
//vtX.Rotate( Z_AX, 30) ;
Vector3d vtY = Y_AX ;
vtY.ToLoc( frRef) ;
//vtY.Rotate( Z_AX, 30) ;
// creo piano per la S
PlaneS[0] = GLfloat( vtX.x / dTextDimS) ;
PlaneS[1] = GLfloat( vtX.y / dTextDimS) ;
PlaneS[2] = GLfloat( vtX.z / dTextDimS) ;
PlaneS[3] = GLfloat( - vtX * ( ptOri - ORIG) / dTextDimS) ;
// creo piano per la T
PlaneT[0] = GLfloat( vtY.x / dTextDimT) ;
PlaneT[1] = GLfloat( vtY.y / dTextDimT) ;
PlaneT[2] = GLfloat( vtY.z / dTextDimT) ;
PlaneT[3] = GLfloat( - vtY * ( ptOri - ORIG) / dTextDimT) ;
// setto generazione texture automatica
glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR) ;
glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR) ;
glTexGenfv( GL_S, GL_OBJECT_PLANE, PlaneS) ;
glTexGenfv( GL_T, GL_OBJECT_PLANE, PlaneT) ;
glEnable( GL_TEXTURE_GEN_S) ;
glEnable( GL_TEXTURE_GEN_T) ;
}
// eseguo visualizzazione
return pGraphics->Draw( siObj.nStat, siObj.nMark, bSurfSha, nAlpha, bShowAux) ;
bool bOk = pGraphics->Draw( siObj.nStat, siObj.nMark, bSurfSha, nAlpha, bShowAux) ;
// !!! per textures !!!
glDisable( GL_TEXTURE_GEN_S) ;
glDisable( GL_TEXTURE_GEN_T) ;
glDisable( GL_TEXTURE_2D) ;
return bOk ;
}
//----------------------------------------------------------------------------