Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
823 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Exemple OpenGL MSDN, boucle des msg

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Exemple OpenGL MSDN, boucle des msg

n°288832
antsite
Je me souviens
Posté le 18-01-2003 à 12:12:10  profilanswer
 

Voila un copier coller d'une partie de WinMain de l'exemple OpenGL pour win32 de msdn. Je ne comprends pas pourquoi le programme une fois compilé et éxécuté me fait appel à drawScene() en boucle. Pour moi il devrai être appelé qu'une seule fois et après l'animation vient par l'appui des flèches... (code complet: http://msdn.microsoft.com/library/ [...] t_17jm.asp )
 

Code :
  1. /* animation loop */
  2.     while (1) {
  3.         /*  
  4.          *  Process all pending messages  
  5.          */
  6.         while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) == TRUE)
  7.         {
  8.             if (GetMessage(&msg, NULL, 0, 0) )
  9.             {
  10.                 TranslateMessage(&msg);
  11.                 DispatchMessage(&msg);
  12.             } else {
  13.                 return TRUE;
  14.             }
  15.         }
  16.         drawScene();
  17.     }

mood
Publicité
Posté le 18-01-2003 à 12:12:10  profilanswer
 

n°288848
ITM
Avatar peint à la main
Posté le 18-01-2003 à 12:35:09  profilanswer
 

ANTSite a écrit :

Voila un copier coller d'une partie de WinMain de l'exemple OpenGL pour win32 de msdn. Je ne comprends pas pourquoi le programme une fois compilé et éxécuté me fait appel à drawScene() en boucle. Pour moi il devrai être appelé qu'une seule fois et après l'animation vient par l'appui des flèches... (code complet: http://msdn.microsoft.com/library/ [...] t_17jm.asp )
 

Code :
  1. /* animation loop */
  2.     while (1) {
  3.         /*  
  4.          *  Process all pending messages  
  5.          */
  6.         while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) == TRUE)
  7.         {
  8.             if (GetMessage(&msg, NULL, 0, 0) )
  9.             {
  10.                 TranslateMessage(&msg);
  11.                 DispatchMessage(&msg);
  12.             } else {
  13.                 return TRUE;
  14.             }
  15.         }
  16.         drawScene();
  17.     }




Moi, j'ai toujours fait comme ça. Si un objet quelconque doit bouger sans que tu touches aux flèches, il faut bien l'afficher quand même!


---------------
iteme.free.fr | Mon feedback
n°289257
LeGreg
Posté le 18-01-2003 à 22:17:22  profilanswer
 

tout depend si tu veux que ton appli prenne toutes les ressources qu'elle peut ou alors reste idle la plupart du temps.
 
Tu peux aussi rajouter un booleen isActive qui devient faux
quand ton application est minimisee: ca sert a rien de tracer en arriere plan. Dans ce cas tu peux remplacer ton peek par un Getmessage qui devient bloquant jusqu'au prochain message.
 
En general dans un jeu video (par exemple) l'ecran est rafraichi en permanence parce qu'il y a toujours un element qui bouge a l'ecran meme s'il n'y a pas d'action du joueur.
Et si tu n'as pas besoin de 100% du CPU, ton appli peut se mettre en attente d'une notification d'evenement comme la fin du balayage vertical (pour ne pas tracer plus d'une fois par frame).
 
LeGreg


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Exemple OpenGL MSDN, boucle des msg

 

Sujets relatifs
prog openglPkoi ça boucle???
Cours + Exemple sur CAsyncSock en VC++Boucle infinie ! je voit pas ou elle est
[C++/OpenGl] comment avoir un timing pr un chronomètreJ'ai un problème avec l'envoi de variables contenues dans une boucle..
cherche exemple de synchronisation de sémaphores[C++]Cherche tutorial MFC + OpenGL
kylix et l openGL[MinGW / C/C++] prob. à la compilation de brols OpenGL.
Plus de sujets relatifs à : Exemple OpenGL MSDN, boucle des msg


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR