Bonjour à tous.
Voila j'ai deux petits problèmes avec OpenGL.
Pour le premier, je voudrais, au milieu d'un programme, affiché mon image et qu'ensuite le programme continu.
J'utilise ce code (test est la structure ou toutes les info sont stockées):
Mon problème est que le programme s'arrête quand il exécute glutMainLoop() puisqu'il renre dans une boucle infinie.
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
32
33
34
35
36
37
38
39
40
41
42
43 Main: /************************************* Initialization OpenGL ***************************************/ /* Initialize GLUT state - glut will take any command line arguments that pertain to it or X Windows */ glutInit(&argc, argv); /* Select type of Display mode: Single buffer, RGB color*/ glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); /***************************************************************************************************/ Chargement de l'image /******************* Display the image thanks to OpenGL *************************/ glutInitWindowSize(test.Largeur(), test.Hauteur()); /* the window starts at the upper left corner of the screen */ glutInitWindowPosition(0,0); /* Open a window */ window1 = glutCreateWindow(test.GetNom()); /* Initialize our window. */ InitGL(); /* Register the function to do all our OpenGL drawing. */ glutDisplayFunc(&DrawScene); /* Start Event Processing Engine */ glutMainLoop(); /***************************************************************************/ Fonction drawscene: /* The main drawing function. */ void DrawScene(){ // Clear The Screen glClear(GL_COLOR_BUFFER_BIT); glDrawPixels( test.Hauteur(), test.Largeur(), GL_LUMINANCE, GL_UNSIGNED_BYTE, test.GetImage() ); /* don't wait! start processing buffered OpenGL routines */ glFlush (); }
Je pense que c'est normal, le problème c'est que si je le met à la fin, mon programme affiche les images qu'a la fin.
Et j'aimerais qu'elle s'affiche au fur et à mesure (En faite j'ai plusieurs images à afficher au fur et a mesure).
Est-ce qu'il y a une fonction pour afficher l'image et continuer le programme après, en évitant d'utiliser la boucle infinie en quelque sorte !!
Mon second problème est l'image affichée. Elle n'est bonne.
Voici ce que ca donne:
Comme vous pouvez le voir elle est toute étirée !!
l'image originale est Lena.pgm, en P2.
Avec une image en P5, j'arrive à afficher l'image parfaitement.
J'utilise la même méthode de stockage des pixels donc je ne pense pas que cela vienne de ca !!
La je pense que j'ai un souci avec ma fonction d'affichage:
glDrawPixels( test.Hauteur(), test.Largeur(), GL_LUMINANCE, GL_UNSIGNED_BYTE, test.GetImage() );
Est-ce que vous sauriez résoudre ca?
(J'ai essayé en inversant Hauteur et Largeur mais ca n'a rien changé ou en mettant GL_BYTE mais la ca m'a sorti une exception à l'éxécution)
Comme matrice je lui envoi la matrice de l'image et elle est sous forme de byte*.
Merci beaucoup pour votre aide !!!!
Partager