2015-03-19 2 views
2

J'ai vu en ligne l'utilisation de HWSURFACE|DOUBLEBUF|RESIZABLE pour redimensionner la fenêtre.Que font HWSURFACE et DOUBLEBUF?

Cela fonctionne mais je ne suis pas sûr de ce que font réellement les HWSURFACE et DOUBLEBUF. Je sais qu'il est synonyme de surface matérielle et double tampon, mais ce qu'ils aident réellement avec je ne sais pas.

Répondre

2

Je suis déçu que les docs de pygame (par exemple http://www.pygame.org/docs/ref/display.html) ne semblent pas expliquer cela comme j'aurais pensé qu'ils devraient avoir. Le double tampon, comme l'indique la description de l'étiquette, utilise un bloc de mémoire séparé pour appliquer toutes les routines de dessin et ensuite copier ce bloc (mémoire tampon) dans la mémoire vidéo en une seule opération. Ne pas le faire peut conduire à des artefacts graphiques. Un exemple simple pourrait être le scintillement de la scène provoqué par une partie de l'arrière-plan étant dessiné juste avant la régénération de la vidéo et ensuite d'autres parties après (donc elles ne sont pas montrées jusqu'à la prochaine actualisation).

La surface matérielle fait référence à l'utilisation de la mémoire sur la carte vidéo («matériel») pour stocker des tirages par opposition à la mémoire principale («logiciel»). La principale raison à cela est que la bande passante entre la mémoire principale et la mémoire vidéo a tendance à être lente et que le fait de pouvoir dessiner directement peut accélérer ce processus. SDL (sur lequel PyGame est construit) a été développé à l'origine pour prendre en charge les vieilles cartes vidéo qui ne supportaient pas les surfaces matérielles. Vous devez donc demander des fonctionnalités supplémentaires pour voir si votre matériel peut en tirer profit. D'après ce que j'ai compris, à peu près toutes les cartes vidéo (y compris à bord des ordinateurs portables bas de gamme des dernières années (ou même des choses comme le Raspberry Pi, mais il faudrait que je le vérifie) devraient prendre en charge DOUBLEBUF et HWSURFACE.Vous pouvez vérifier la documentation SDL pour voir si cela fournit des détails supplémentaires dont vous avez besoin

Hope that helps