Partage
  • Partager sur Facebook
  • Partager sur Twitter

[pygame] bloque a 60 FPS

    14 août 2010 à 17:52:03

    Bonjour,
    J'ai remarque en utilisant pygame que je suis bloque a 60 fps meme avec le code minimal:
    #!/usr/bin/env python
    import pygame
    
    pygame.init()
    video_flags = pygame.OPENGL | pygame.HWSURFACE | pygame.DOUBLEBUF 
    dim = (800, 600)
    window = pygame.display.set_mode(dim, video_flags)
    clock = pygame.time.Clock()
    
    while True:
        pygame.display.set_caption('FPS: ' + str(clock.get_fps()))
        clock.tick()
        pygame.display.flip()
    

    Je crois que c'est du a une espece de vertical synchronisation, mais je ne suis pas sur. J'ai deja essaye ceci pour la desactiver, mais ca ne marche apparement pas:
    pygame.display.gl_set_attribute(pygame.GL_SWAP_CONTROL, 0)
    


    J'utilise Linux.

    merci d'avance
    J'utilise
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      14 août 2010 à 18:10:35

      Je n'y connais pas grand chose mais en regardant du côté de la doc officielle de pygame, il y a un projet indiquant les plus hautes performances.

      PyGL3Display

      Peut-être tes résultats seront optimisés

      Je cite :

      Citation

      Clean, easy to use "normal" API, which also has an advanced mode for people who want the absolute maximum in performance and don't mind getting their hands dirty. For normal use, the API should not be any more difficult to use than Pygame.

      • Partager sur Facebook
      • Partager sur Twitter
        14 août 2010 à 18:23:54

        c'est une bibliotheque 2D...
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          14 août 2010 à 18:42:58

          En général, quand ça bloque à 60 FPS, c'est effectivement la synchronisation verticale. Essaie d'exécuter ton programme en ajoutant vblank_mode=0 devant.
          • Partager sur Facebook
          • Partager sur Twitter
            14 août 2010 à 18:48:19

            cela me change rien malheureusement :(
            • Partager sur Facebook
            • Partager sur Twitter
              14 août 2010 à 19:00:04

              C'est bizarre, tu n'as pas passé d'argument à clock.tick() et pourtant ton FPS est "cappé"...
              La doc:

              http://www.pygame.org/docs/ref/time.ht [...] me.time.Clock
              http://www.pygame.org/docs/ref/display [...] get_attribute
              • Partager sur Facebook
              • Partager sur Twitter
                14 août 2010 à 19:31:29

                Citation : Lecureuil

                C'est peut-etre normal ?
                http://www.sebsauvage.net/rhaa/index.p [...] que-pour-rien

                non ce n'est pas normal
                • Partager sur Facebook
                • Partager sur Twitter
                  15 août 2010 à 10:57:00

                  Si, c'est normal.

                  C'est parce que tu ne passes pas par la carte graphique : les flags que tu passes au début de ton code sont inutiles tels quels.

                  PyGame utilise l'accélération matérielle pour l'affichage uniquement si ton display est en plein écran (et si le driver fonctionne, cela va de soi...).

                  Tant que tu restes en fenêtré, l'affichage est logiciel, donc assez "lent" quand tu le gères de manière brute, raison pour laquelle tout l'art d'utiliser PyGame réside dans le fait de ne pas faire des flip comme un bourrin et de ne mettre à jour que les zones du display qui ont bougé entre 2 frames (ce qui te fait gagner énormément en performances).
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Zeste de Savoir, le site qui en a dans le citron !
                    15 août 2010 à 23:25:00

                    meme en FullScreen je reste à 60 FPS
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 août 2010 à 23:40:28

                      Je suis aussi sous Linux.
                      J'ai testé ton code avec la synchronisation verticale activée et j'ai 60 FPS comme toi.
                      En la désactivant, j'ai plusieurs milliers de FPS.

                      La synchronisation verticale est surement activée dans ton pilote graphique.
                      Essaie de la désactiver via ton pilote.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 août 2010 à 2:40:38

                        et comment je fais stp? J'ai pas mal cherche ces dernier temps

                        ma CG:
                        00:02.0 VGA compatible controller: Intel Corporation Mobile GME965/GLE960 Integrated Graphics Controller (rev 0c)
                        00:02.1 Display controller: Intel Corporation Mobile GME965/GLE960 Integrated Graphics Controller (rev 0c)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        [pygame] bloque a 60 FPS

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown