2016-08-02 2 views
-2

J'ai développé un moteur de jeu à partir de rien, en utilisant C++, openGL et GLUT depuis un certain temps. J'utilisais mon ordinateur et le moteur fonctionnait bien mais récemment j'ai acheté un ordinateur portable et j'ai décidé d'essayer mon moteur. Quand j'ai démarré le moteur, il fonctionnait avec une vitesse d'image de 0,3 fps mais après l'installation de nouveaux pilotes pour le GPU, tout s'est bien passé. Malheureusement, un nouveau problème est survenu, à mon avis, de nulle part. Lorsque je lance l'application, l'écran ne rafraîchit que si je clique continuellement sur n'importe quel bouton de la souris, même si je n'ai pas de glutMouseFunc() ou si je alt + tabule la fenêtre. Je n'ai aucune idée de ce qui pourrait être la raison, donc si vous avez des idées, je suis ouvert à eux.Les fenêtres GLUT ne se régénèrent pas

+0

Je n'ai pas travaillé avec GLUT depuis un moment, mais à partir de décrit, il semble que votre application rafraîchit l'écran non pas sur chaque image, mais seulement en cas d'événements comme le mouvement de la souris et la fenêtre redessinée. Pourriez-vous poster la fonction d'affichage, ou la partie de code contenant 'glClear(); ... glutSwapBuffers(); '? – Artalus

+0

Je ne pense vraiment pas que le problème est dans le code parce que le même code fonctionne parfaitement sur mon ordinateur. Cependant, voici ma fonction d'affichage: 'void displayGL() { \t glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); \t ... \t glutSwapBuffers(); } ' J'ai également' glutPostRedisplay() 'dans une fonction de ralenti et une fonction de mouvement passif donc ce n'est pas le problème aussi. – pandicacao

Répondre

0

Vous pouvez essayer de mettre:

glutPostRedisplay(); 

après vos fonctions clés et de la souris. Ex.

static void key(unsigned char key, int x, int y) 
{ 
    switch (key) 
    { 
     case 27 : 
     case 'q': 
      exit(0); 
     break; 

    } 

    glutPostRedisplay();//this is what I mean 
} 

C'est ce qui fonctionne pour moi.

+0

J'ai la fonction 'glutPostRedisplay()' à plusieurs fonctions de surabondance et aussi j'ai essayé de le mettre dans chaque fonction de surabondance mais cela n'a pas fonctionné. Je pense que le problème n'est pas dans le code mais ailleurs, mais je n'ai aucune idée de ce qui pourrait être la raison. – pandicacao