Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Hi! Der Artikel über SwapBuffers hat bei mir eine Frage aufgeworfen.
In der Beschreibung steht:
Zitat:
Die Funktion SwapBuffers tauscht Back- und Frontbuffer aus.
Stimmt das wirklich? Ich würde "swap" auch mit "tauschen" übersetzen, aber ist es nicht eher so, dass der Backbuffer in den Frontbuffer kopiert wird? Alles andere wäre imho Performance Verschwendung, da man den alten Bildinhalt ja i.d.R. nicht mehr braucht. Ach, und eigentlich könnten auch einfach nur die Pointer auf Front- und Backbuffer getauscht werden (*nicht* kopiert ). Falls die OpenGL-Spezifikation tatsächlich ein Tauschen vorsieht, wie implementieren es die Treiber von ATI / Nvidia?
Greetings
mrtrain
Zuletzt geändert von mrtrain am Mi Aug 31, 2011 17:51, insgesamt 1-mal geändert.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Austauschen heißt doch nicht zerstören. Es ist so wie du vermutest (jedenfalls soweit ich mich erinnere), es werden einfach nur die Pointer gedreht, damit sind Front und Backpuffer vertauscht. q.e.d.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Danke für die Info. Ich überleg gerade, ob das nicht eigentlich ins OpenGL-Forum gehört. Aber vielleicht sollte dem Artikel noch ein Hinweis hinzugefügt werden.
Flash hat geschrieben:
Austauschen heißt doch nicht zerstören.
Ja, das meine ich auch - wie kommst du darauf? *verwirrt*
Gruß mrtrain
Zuletzt geändert von mrtrain am Mi Aug 31, 2011 17:51, insgesamt 1-mal geändert.
Ich möchte dann auch mal einen Kommentar abgeben, weil sich da wissen von vor 10 Jahren in meinem Kopf geregt hat. Und zwar sind beide Denkweisen richtig. Es hängt von der zu Grunde liegenden Hardware, den Treibern und letztlich vom ausgesuchten Pixelformat ab, ob kopiert (PFD_SWAP_COPY) oder ausgetauscht (PFD_SWAP_EXCHANGE) wird.
Ist das jetzt nur Windowsspezifisch oder allgemein so?
Da musste ich jetzt erst mal recherchieren, weil ich zu der Zeit nur Windows hatte. Also seit 2001 gibt es eine Erweiterung für GLX die die Funktion auch dort verfügbar macht: glx_swap_method
Zitat:
The GLX_SWAP_METHOD_OML attribute may be set to one of the following values:
GLX_SWAP_EXCHANGE_OML
GLX_SWAP_COPY_OML
GLX_SWAP_UNDEFINED_OML.
If this attribute is set to GLX_SWAP_EXCHANGE_OML then swapping exchanges the front and back buffer contents; if the attribute is set to GLX_SWAP_COPY_OML then swapping copies the back buffer contents to the front buffer, preserving the back buffer contents; if it is set to GLX_SWAP_UNDEFINED_OML then the back buffer contents are copied to the front buffer but the back buffer contents are undefined after the operation. If the GLXFBConfig does not support a back buffer, then the value of GLX_SWAP_METHOD_OML is set to GLX_SWAP_UNDEFINED_OML.
Code:
Attribute Default
Criteria
--------- -------
GLX_SWAP_METHOD_OML GLX_DONT_CARE
Wobei wie unter Windows die Implementierung entscheidet, wenn nicht anders angegeben.
Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.