Question

Je travaille actuellement sur un moteur de jeu écrit en pygame et je voulais ajouter le support OpenGL.

J'ai écrit un test pour voir comment faire fonctionner pygame et OpenGL ensemble. Lorsqu'il fonctionne en mode fenêtré, il tourne entre 150 et 200 images par seconde. Lorsque je l’utilise en plein écran (je n’ai fait qu’ajouter le drapeau FULLSCREEN lors de la configuration de la fenêtre), la fréquence passe à 60 i / s. J'ai ajouté beaucoup plus de fonctions de dessin pour voir si c'était une chute de performance énorme, mais cela fonctionnait toujours à 60 ips.

Dois-je faire quelque chose de plus pour indiquer à OpenGL qu'il fonctionne en plein écran ou s'agit-il d'une limitation d'OpenGL?

(J'utilise Windows XP)

Était-ce utile?

La solution

Comme indiqué ci-dessus, cela serait dû au fait que Pygame attendait le retour vertical lorsque vous mettez à jour l'écran en appelant display.flip () . En tant que Pygame affiche la documentation note, si vous définissez le mode d'affichage à l'aide des indicateurs HWSURFACE ou DOUBLEBUF , display.flip () attendra le retour vertical avant permuter les tampons.

Pour être honnête, je ne vois aucune bonne raison (mis à part le benchmarking) d’essayer d’obtenir une cadence supérieure à la fréquence de rafraîchissement de l’écran. Vous (et les personnes qui jouent à votre jeu) ne remarquerez aucune différence de vitesse ou de performance, car l'affichage ne peut de toute façon que 60 fps. De plus, si vous ne synchronisez pas avec la retrace verticale, il y a de fortes chances que vous obteniez déchirure d'écran .

Autres conseils

S'agit-il d'un problème de V-Sync ? Quelque chose à propos de la configuration ou de votre environnement peut être de limiter la fréquence d'images maximale à la fréquence d'actualisation de votre moniteur.

Si vous ne modifiez pas votre clock.tick () lorsque vous passez du mode plein écran au mode fenêtré, il s'agit certainement d'un problème de vsync. Si vous utilisez un écran LCD, vous êtes certain à 100%.

Malheureusement, v-sync peut être géré à de nombreux endroits, y compris SDL, Pyopengl, votre serveur d’affichage et vos pilotes vidéo. Si vous utilisez Windows, vous pouvez ajuster la bascule vsync dans le panneau de configuration de nvidia à tester, et il y a fort à parier que quelque chose se trouve dans les paramètres nvidia pour Linux. Je suppose que les pilotes d'autres fabricants ont des paramètres similaires, mais c'est une hypothèse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top