Question

Je joue avec pygame (sur Debian / Lenny). Il semble fonctionner très bien, sauf déchirure gênant de blits (plein écran ou en mode fenêtré).

J'utilise le pilote par défaut SDL X11. Googler suggère qu'il est un problème connu avec SDL X11 ne fournit aucune installation vsync (même avec un affichage créé avec des drapeaux de FULLSCREEN|DOUBLEBUF|HWSURFACE), et je dois utiliser le pilote « dga » à la place.

Toutefois, l'exécution

SDL_VIDEODRIVER=dga ./mygame.py

jette dans l'initialisation pygame avec

pygame.error: No available video device

(malgré xdpyinfo montrant une extension XFree86-DGA présent).

Alors: quel est le truc pour obtenir flips vsynced sans éclats? Soit en obtenant ce travail chose dga ou un autre mécanisme?

Était-ce utile?

La solution

Eh bien, ma solution éventuelle est de passer à Pyglet , qui semble soutenir OpenGL beaucoup mieux que Pygame, et n'a pas de problèmes de scintillement.

Autres conseils

La meilleure façon de garder la déchirure au minimum est de garder votre taux de cadre proche de la fréquence de l'écran que possible. La bibliothèque SDL ne dispose pas d'un vsync à moins que vous utilisez OpenGL à travers elle, la seule façon est de rapprocher le cadre vous noter. Le matériel SDL tampon double est pas garantie, bien agréable quand il fonctionne. Je l'ai vu en peu souvent l'action.

Dans mon expérience avec SDL, vous devez utiliser OpenGL pour éliminer complètement la déchirure. Il est un peu d'un ajustement, mais simple dessin textures 2D n'est pas si compliqué que ça et vous obtenez quelques autres bonus supplémentaires que vous êtes en mesure de mettre en œuvre comme la rotation, mise à l'échelle, le mélange et ainsi de suite.

Cependant, si vous voulez continuer à utiliser le rendu du logiciel, je vous recommande d'utiliser la mise à jour du rectangle sale. Il est aussi un peu difficile de s'y habituer, mais il permet d'économiser des charges de traitement qui peut le rendre plus facile de garder les mises à jour à rythme et évite tout l'écran soit teared (à moins que vous défiler toute la zone de jeu ou quelque chose). En plus du temps qu'il faut pour attirer le tampon est à un minimum qui peut éviter le blitting qui a lieu lorsque l'écran est mise à jour, qui est la cause de la déchirure.

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