Bonjour à tous,
J'ai recupere une fonction qui affiche du texte dans la fenetre, mais quand je l'appelle tout mon ecran est teinte de la meme couleur que le texte que j'ai affiche; voici mon code :
fonction display() :
Merci pour votre aide...begin2d() :
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
26
27
28
29
30
31 /* Efface le frame buffer et le Z-buffer */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); /* On attache la texture numero */ my_texturer->bind_texture(0); /* * Affichage de l'ecran d'accueil */ glTranslatef(0.0f,0.0f,-2.4f); glBegin(GL_QUADS); glTexCoord2f(0.0f,0.875f);glVertex3f(-1.33f, 1.0f, 0.0f); glTexCoord2f(1.0f,0.875f);glVertex3f( 1.33f, 1.0f, 0.0f); glTexCoord2f(1.0f,0.125f);glVertex3f( 1.33f,-1.0f, 0.0f); glTexCoord2f(0.0f,0.125f);glVertex3f(-1.33f,-1.0f, 0.0f); glEnd(); /* * On affiche ou pas les Fps et l'aide du jeu */ if(showFps){ textPrinter->Begin2d(); textPrinter->DrawString(resolution_X - 100, 50, GLUT_BITMAP_8_BY_13, "%d Fps", timer ->getFps()); textPrinter->End2d(); } if(showHelp) textPrinter->DisplayHelp(20, resolution_Y - 30); glutSwapBuffers();
la fonction qui affiche le texte :
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 /* * On desactive tous */ glDisable(GL_DEPTH_TEST); glDisable(GL_TEXTURE_2D); glDisable(GL_LIGHTING); glDisable(GL_COLOR_MATERIAL); /* * On active ce qu'il faut et on se place la ou il faut */ glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glOrtho(0, glutGet(GLUT_WINDOW_WIDTH), 0, glutGet(GLUT_WINDOW_HEIGHT), -1, 1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity();
end2d() :
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
26
27
28
29
30 void TextPrinter::DrawString(int x, int y, void *font, char *s, ...){ int lines; char* p; char text[1024]; va_list ap; /* * Si pas de string alors on sort */ if(s == NULL){ return; } va_start(ap, s); vsprintf(text, s, ap); va_end(ap); /* * On se positionne sur l'ecran */ glRasterPos2i(x, y); /* * On affiche toutes les lettres de la chaine a ecrire */ for(p = text, lines = 0; *p; p++){ glutBitmapCharacter(font, *p); } }
et ma fonction idle fait un postRedisplay().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /* * On vide les buffers et on reactive ce qui a ete desactive */ glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); glEnable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); glEnable(GL_LIGHTING); glEnable(GL_COLOR_MATERIAL);
Merci pour votre aide, car je n'arrive pas à resoudre ce probleme...
Partager