(re)Bonjour a tous

Je suis entrain de me remetre dans openGL et je m'apercois qu'il me manque pas mal de notions de bases que j'avais oculté jusqu'a présent ! Mais bon ... il n'est jms trop tard ^^
En fait voici une portion de code issu d'un tutorial sur la création de font .
C'est la fonction qui sert a placer le texte fraichement créer a l'ecran .
Je vais tenter de l'expliquer ...a ous de me dire si je suis a coté de la plaque ou pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
void Move2dText(int x, int y) 
{ 
glPushAttrib(GL_TRANSFORM_BIT | GL_VIEWPORT_BIT); 
 
glMatrixMode(GL_PROJECTION); 
glPushMatrix(); 
glLoadIdentity(); 
 
glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity(); 
 
y = 480 - FONT_HEIGHT - y; 
 
glViewport(x-1, y-1, 0, 0); 
 
glRasterPos4f(0, 0, 0, 1); 
 
glPopMatrix(); 
glMatrixMode(GL_PROJECTION); 
glPopMatrix(); 
 
glPopAttrib(); 
}
On commence par un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
glPushAttrib(GL_TRANSFORM_BIT | GL_VIEWPORT_BIT);
Cette fonction va servir a faire des changement temporaire sur la matrice de pojection(<-- ?? chui pas sur de moi la ??) et le viewport .
Ces changement ne seront effectif que entre cette ligne et la lgne final :
Ensuite, nous avons un groupe de ligne + ou - similaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
glMatrixMode(GL_PROJECTION); 
glPushMatrix(); 
glLoadIdentity(); 
 
glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity();
On va
-selectionner la matrice de projection en tant que matrice courante
-empiler cette matrice
-"reset" cette matrice

-selectionner la matrice de "modelisation" en tant que matrice courante
-empiler cette matrice
-"reset" cette matrice

-> bilan : la matrice sur laquelle on travaille est la derniére selectionner ( modelvieuw ),
Et les changement effectuer sur ces 2 matrice ne seront effectif qu'entre ces ligne et celles la :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
glPopMatrix(); 
glMatrixMode(GL_PROJECTION); 
glPopMatrix();
Ou, simplement, on dépile notre matrice courante, on sleectionne la matrice de porjection et on la dépile a son tour .

Enfin , reste le coeur de la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
y = 480 - FONT_HEIGHT - y; 
 
glViewport(x-1, y-1, 0, 0); 
 
glRasterPos4f(0, 0, 0, 1);
FONT_HEIGHT vaut 48 dans notre cas présent ...
j'avoue que j'ai du mal a décortiquer ces 3 lignes ...
tout d'abord on change y en 480 ( ?? d'ou ca sort ca ?? ) - la hauteur d'une lettre - y ..

humm ::confuse::
Si vous pouvez m'éclairer
merci