(re)Bonjour a tous ![:)](https://www.developpez.net/forums/images/smilies/icon_smile.gif)
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 ![:)](https://www.developpez.net/forums/images/smilies/icon_smile.gif)
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
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 :
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 :
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 :
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 ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
merci
Partager