1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
void dessin( t_viewport* viewport, t_objet* ptrDeb, int largeur, int hauteur )
{
float coef;
glViewport( viewport->viewport[0], viewport->viewport[1], viewport->viewport[2], viewport->viewport[3] );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
if( viewport->vueAssociee == VIEWPORT_INACTIF )
return;
if( viewport->vueAssociee != VUEDEPERSPECTIVE )
{
if( largeur > hauteur )
{
coef = (float)largeur/hauteur;
glOrtho( viewport->fenetrage[0]*coef, viewport->fenetrage[1]*coef, viewport->fenetrage[2],
viewport->fenetrage[3], 0.1, 1000 );
}
else
{
coef = hauteur/(float)largeur;
glOrtho( viewport->fenetrage[0], viewport->fenetrage[1], viewport->fenetrage[2]*coef,
viewport->fenetrage[3]*coef, 0.1, 1000 );
}
}
else gluPerspective( 45, (float)largeur / hauteur, 0.1, 1000 );
/* Sauvegarde des informations sur les vues */
glGetDoublev( GL_PROJECTION_MATRIX, viewport->projection );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
if( viewport->vueAssociee == VUEDEFACE )
gluLookAt( 0.0, 0.0, viewport->camera.z,
viewport->camera.cibleX, viewport->camera.cibleY, viewport->camera.cibleZ,
viewport->camera.angleX, viewport->camera.angleY, viewport->camera.angleZ );
else if( viewport->vueAssociee == VUEDEDERRIERE )
gluLookAt( 0.0, 0.0, -viewport->camera.z,
viewport->camera.cibleX, viewport->camera.cibleY, viewport->camera.cibleZ,
viewport->camera.angleX, viewport->camera.angleY, viewport->camera.angleZ );
else if( viewport->vueAssociee == VUEDEDESSUS )
gluLookAt( 0.0000001, viewport->camera.y, 0.0,//Beug sinon...
viewport->camera.cibleX, viewport->camera.cibleY, viewport->camera.cibleZ,
viewport->camera.angleX, viewport->camera.angleY, viewport->camera.angleZ );
else if( viewport->vueAssociee == VUEDEPERSPECTIVE )
gluLookAt( viewport->camera.x, viewport->camera.y, viewport->camera.z,
viewport->camera.cibleX, viewport->camera.cibleY, viewport->camera.cibleZ,
viewport->camera.angleX, viewport->camera.angleY, viewport->camera.angleZ );
/* Sauvegarde des informations sur les vues */
glGetDoublev( GL_MODELVIEW_MATRIX, viewport->modelview );
axes();
quadrillage();
dessinerScene( ptrDeb );
} |