( SDL_GL_SwapBuffers()
en particulier)
Lorsque vous avez dessiné une scène et que vous appelez des tampons de swap, il est courant de placer glClear()
la scène avant de dessiner quoi que ce soit; si vous ne désactivez pas , quel est le contenu du tampon? Est-ce défini par une spécification ou varie-t-il selon le pilote?
opengl
sdl
double-buffering
Volonté
la source
la source
Réponses:
Les détails sur la façon d'échanger les tampons avant et arrière varient d'une plateforme à l'autre, et la réponse dépend donc de la plateforme.
Selon la documentation de référence GLX glXSwapBuffers :
Cependant, il existe l' extension GLX_EXT_buffer_age :
Mais Win32 SwapBuffers dit seulement:
Et CGLFlushDrawable, pour OS X Core Graphics dit:
Enfin, dans la fonction d'échange de tampons standard d'OpenGL ES, eglSwapBuffers :
Donc qu'est-ce que tout cela veut dire?
Étant donné les contraintes de GLX et CGL, et le désir de minimiser les changements entre OpenGL et OpenGL ES, vous pourriez tout aussi bien supposer que le contenu est des ordures.
la source
D'après ce que j'ai lu, le seul comportement est UNDEFINED. Je suppose donc qu'il n'y a aucune garantie quant au contenu du tampon. Sans oublier que certaines bibliothèques encapsulent en fait un appel clair dans l'appel des tampons d'échange.
la source
Le comportement est INDÉFINI, donc si vous voulez remplir tout l'écran de toute façon, vous pouvez envisager de supprimer le clear .. sauf, dans certains environnements (certaines architectures de tuile au moins), cela dégradera réellement les performances. Le plein écran clair au début du rendu est une opération si courante que je serais surpris s'il n'était pas bien optimisé sur toutes les plateformes cibles.
La raison pour laquelle elle n'est PAS DÉFINIE est que pour de nombreuses architectures, la définition de l'état du contenu constituerait une surcharge supplémentaire, quelle que soit la façon dont vous définiriez la norme.
Quant à ce que vous y trouverez, je peux faire une supposition basée sur l'expérience;
Sur les architectures à double (ou multi) tampons, comme la plupart des matériels vidéo pour PC de bureau, vous trouverez probablement les «autres» données de tampon. Ce n'est pas garanti cependant, car ce n'est pas dans la spécification, si une optimisation étrange en profite, ils brouilleront les données.
Sur les architectures en mosaïque, vous pouvez trouver les mêmes données que la dernière image, des données étrangement tronquées en fonction de la taille de la mosaïque, ou à peu près n'importe quoi d'autre.
Ensuite, vous avez des architectures bizarres (comme le NDS) qui pourraient vous donner à peu près n'importe quoi, car leur définition du tampon n'est pas exactement ce que vous attendez.
la source