Quel est le point de glutidlefunc() dans freeglut
- Je obtenir comment glutdisplayfunc() rend la boucle d'affichage et Iv lu à certains endroits que vous devriez mettre la mécanique de jeu dans glutidle au lieu de l'affichage; pourquoi ne pouvez-vous pas simplement les mettre dans un while (gameisrunning) en boucle?
Où serait cette boucle aller?
Qu'entendez-vous par le mainloop? Entendez-vous l'appel à
Qu'entendez-vous par le mainloop? Entendez-vous l'appel à
glutMainLoop
ou êtes-vous à l'aide d'une boucle et manuellement appeler glutMainLoopEvent
?OriginalL'auteur Jim Jones | 2013-03-27
Vous devez vous connecter pour publier un commentaire.
Dans la programmation événementielle, comme vous l'avez interactive des applications OpenGL, l'application principale de la boucle n'a généralement trois choses:
GLUT n'ces étapes implicitement dans son
glutMainLoop()
pour vous. Presque tous de la SURABONDANCE des rappels de vous inscrire (par exemple,glutKeyboardFunc()
,glutReshapeFunc()
, etc.) prendre soin de 1., et d'appeler les fonctions que vous avez défini pour sans doute faire 2.Maintenant, si vous vous inscrivez à une fonction inactive avec
glutIdleFunc()
, il est appelé après tous les événements en cours sont traitées. Souvent les programmeurs de mettre en œuvre leur fonction inactive simplement appeler la routine qu'ils utilisent pour le rendu de la scène (c'est à dire, la routine, ils passent dansglutDisplayFunc()
). Cette approche peut être problématique si le rendu "prend du temps" (comme proche de tous les temps de rendu d'une image), puisque vous ne pouvez pas avoir le temps d'effectuer le rendu et puis des événements de processus pour l'image suivante. Si vous insérez la boucle while que vous mentionnez, vous auriez du le faire, ce qui handicape GLUT natif de l'événement mécanismes de traitement. La meilleure approche pour jouer gentiment avec GLUT est de mettre en œuvre votre fonction inactive seulement appelerglutPostRedisplay()
, qui raconte GLUT pour planifier un appel de votre fonction d'affichage une fois que tous les événements sont traités et l'avant de votre inactivité fonction est appelée.OriginalL'auteur radical7