( SDL_GL_SwapBuffers()
insbesondere)
Wenn Sie eine Szene gezeichnet haben und Swap-Puffer aufrufen, ist es Routine, glClear()
die Szene dann zu zeichnen, bevor Sie etwas zeichnen. Wenn Sie nicht löschen, wie lautet der Inhalt des Puffers? Ist dies durch eine Spezifikation definiert oder variiert es je nach Fahrer?
opengl
sdl
double-buffering
Wille
quelle
quelle
Antworten:
Die Details zum Austauschen des vorderen und hinteren Puffers variieren von Plattform zu Plattform. Daher ist die Antwort plattformabhängig.
Gemäß der Referenzdokumentation zu GLX glXSwapBuffers :
Es gibt jedoch die Erweiterung GLX_EXT_buffer_age :
Aber Win32 SwapBuffers sagt nur:
Und CGLFlushDrawable für OS X Core Graphics sagt:
Schließlich in der OpenGL ES-Standard-Pufferaustauschfunktion eglSwapBuffers :
Was bedeutet das alles?
Angesichts der Einschränkungen von GLX und CGL und des Wunsches, Änderungen zwischen OpenGL und OpenGL ES zu minimieren, können Sie genauso gut davon ausgehen, dass es sich bei dem Inhalt um Müll handelt.
quelle
Nach dem, was ich gelesen habe, ist das einzige Verhalten UNDEFINIERT. Ich würde also davon ausgehen, dass es keine Garantie für den Inhalt des Puffers gibt. Ganz zu schweigen davon, dass einige Bibliotheken tatsächlich einen eindeutigen Aufruf in den Aufruf der Swap-Puffer einbinden.
quelle
Das Verhalten ist UNDEFINED. Wenn Sie also trotzdem den gesamten Bildschirm ausfüllen möchten, können Sie das Löschen löschen. Außer in einigen Umgebungen (zumindest bei bestimmten Kachelarchitekturen) wird die Leistung dadurch tatsächlich beeinträchtigt. Das Löschen des Vollbilds zu Beginn des Renderns ist so häufig, dass ich mich wundern würde, wenn es nicht auf allen Zielplattformen gut optimiert wäre.
Der Grund, warum es UNDEFINED ist, ist, dass für viele Architekturen das Definieren des Inhaltsstatus einen zusätzlichen Aufwand darstellt, unabhängig davon, wie Sie den Standard definieren würden.
Was Sie dort finden, kann ich aufgrund von Erfahrungen erraten.
Auf doppelt (oder mehrfach) gepufferten Architekturen, wie bei den meisten Desktop-PC-Videohardware, finden Sie wahrscheinlich die "anderen" Pufferdaten. Dies ist jedoch nicht garantiert, da es nicht in der Spezifikation enthalten ist. Wenn eine seltsame Optimierung davon profitiert, werden die Daten verstümmelt.
Auf gekachelten Architekturen finden Sie möglicherweise dieselben Daten wie im letzten Frame, einige seltsam verstümmelte Daten basierend auf der Kachelgröße oder fast alles andere.
Dann haben Sie einige seltsame Architekturen (wie das NDS), die Ihnen fast alles bieten könnten, da ihre Definition des Puffers nicht genau das ist, was Sie erwarten würden.
quelle