Out of the blue (même si j'ai peut-être manqué une mise à jour automatique), la méthode flip()
pyglet sur mon PC est devenu environ 100 fois plus lent (mon script va d'environ 20 à 0.2 FPS, et le profilage montre que flip()
est à blâmer).La façon dont pyglet échange les buffers avant et arrière (`flip()`, wrapper pour wglSwapLayerBuffers d'OpenGL) sous Windows peut être 100 fois trop lent
Je ne comprends pas complètement cela mais comme mon système d'exploitation est Windows 10, la méthode semble juste être un moyen d'exécuter le cycle de double-tampon OpenGL wglSwapLayerBuffers
en python. Tout le reste semble avoir une vitesse normale, y compris les programmes qui utilisent OpenGL. Cela s'est produit avant et s'est corrigé après un redémarrage, donc je n'ai pas vraiment cherché plus loin à l'époque.
Maintenant, redémarrer ne change rien. J'ai mis à jour mon pilote GPU, j'ai essayé de désactiver vsync, j'ai cherché des processus non liés qui pourraient utiliser beaucoup de mémoire et/ou de mémoire GPU. J'ai réinstallé la dernière version stable de pyglet.
Maintenant, je ne sais pas comment commencer même résoudre ce ...
Voici un exemple minimal qui me imprime 0,2s au lieu de 20 ans.
from pyglet.gl import *
def timing(dt):
print(1/dt)
game_window = pyglet.window.Window(1,1)
if __name__ == '__main__':
pyglet.clock.schedule_interval(timing, 1/20.0)
pyglet.app.run()
(Dans pyglet.app.run()
, le profilage me montre que c'est la méthode flip()
qui prend essentiellement tout le temps). Edit: mon vrai script, qui affiche des images fréquemment mises à jour avec pyglet, ne provoque aucune augmentation de l'utilisation du GPU (j'ai également vérifié l'effet d'un programme aléatoire (Minecraft) pour vérifier que l'outil de surveillance GPU que j'utilise fonctionne et cela provoque une augmentation). Je pense que cela exclut la possibilité que je n'ai pas assez de puissance de calcul disponible en raison d'un problème non lié.