Bonjour à vous.

Je travaille sur un programme OpenGL générant une animation à durée limitée dans le temps (mais variables en fonction des arguments d'entrée).

Je m'inspire de codes sources récupérées sur ce site pour la partie 3D, et le main contient notamment le grand classique :

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
//on initialise glut
glutInit(&argc, argv);   
 
//on spécifie l'emploi du modèle chromatique et du double tampon
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
 
//on spécifie la taille de la fenêtre
glutInitWindowSize(256, 256);
 
//on spécifie la position de la fenêtre
glutInitWindowPosition(250, 250);
 
//on crée une fenêtre
glutCreateWindow(argv[0]);
 
//on initialise
init();
 
//on fait une fonction d'affichage 
glutDisplayFunc(display);
 
//on fait une fonction de redimensionnement
glutReshapeFunc(reshape);
 
//on fait une fonction pour la souris
glutMouseFunc(mouse);
 
//on se met en boucle infinie
glutMainLoop();
Je ne trouve pas de fontion glut officiel me permettant de mettre fin à la boucle glutMainLoop()... Actuellement, le programme se termine si je ferme manuellement la fenêtre, mais j'aimerais automatiser la chose pour que le programme se lance, effectue les traitements en fonction de l'animation, puis se termine après avoir enregistrer les résultats dans un fichier.

J'ai vu qu'on pouvait finir le programme en appelant un exit() mais je crains du coup de ne pas pouvoir faire mes traitements post-glutmainloop()...

Pensez-vous que je doive donc me passer de glutMainLoop() et gérer une boucle moi-même ? Par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
while(AnimationNonFinie) {
	// affichage fenetre, poursuite de l'animation ...
	...
 
	// à un moment, AnimationNonFinie = false;
}
 
// L'animation est enfin terminée, je fais mes traitements
...
Si oui, que dois-je mettre dans cette boucle ?


Merci !