Freigeben über


Front-, Back- und andere Puffer

OpenGL speichert und bearbeitet Pixeldaten in einem Framebuffer. Der Framebuffer besteht aus einem Satz logischer Puffer: Farb-, Tiefen-, Akkumulations- und Schablonenpuffer. Der Farbpuffer selbst besteht aus einem Satz logischer Puffer; Dieser Satz kann eine front-left, eine front-right, eine back-left, eine back-right und eine bestimmte Anzahl von Hilfspuffern enthalten. Ein bestimmtes Pixelformat oder eine OpenGL-Implementierung stellt möglicherweise nicht alle diese Puffer bereit. Beispielsweise unterstützt die aktuelle Version der Microsoft-Implementierung von OpenGL in Windows keine stereoskopischen Bilder, sodass ein Pixelformat keine linken und rechten Farbpuffer aufweisen kann. Darüber hinaus unterstützt die aktuelle Version keine Hilfspuffer. Weitere Informationen zu OpenGL-Puffern und den Darauf basierenden OpenGL-Funktionen finden Sie im OpenGL-Referenzhandbuch und im OpenGL-Programmierhandbuch.

Die Microsoft-Implementierung von OpenGL in Windows unterstützt das doppelte Puffern von Images. Hierbei handelt es sich um ein Verfahren, bei dem eine Anwendung Pixel in einen Off-Screen-Puffer zeichnet und dann, wenn dieses Bild zur Anzeige bereit ist, den Inhalt des Off-Screen-Puffers in einen Puffer auf dem Bildschirm kopiert. Doppelpufferung ermöglicht reibungslose Bildänderungen, die besonders bei animierten Bildern wichtig sind.

Für Anwendungen, die doppelte Pufferung verwenden, stehen zwei Farbpuffer zur Verfügung: ein Frontpuffer und ein Backpuffer. Standardmäßig werden Zeichenbefehle an den Backpuffer (off-screen buffer) weitergeleitet, während der vordere Puffer auf dem Bildschirm angezeigt wird. Wenn der Off-Screen-Puffer zur Anzeige bereit ist, rufen Sie SwapBuffers auf, und Windows kopiert den Inhalt des Off-Screen-Puffers in den Bildschirmpuffer.

Die generische Implementierung verwendet eine geräteunabhängige Bitmap (DEVICE-Independent Bitmap, DIB) als Backpuffer und die Bildschirmanzeige als Frontpuffer. Hardwaregeräte und deren Treiber können unterschiedliche Ansätze verwenden.

Double Buffering ist eine Pixelformateigenschaft. Um die Doppelte Pufferung für ein Pixelformat anzufordern, legen Sie das PFD_DOUBLEBUFFER-Flag in der PIXELFORMATDESCRIPTOR-Datenstruktur in einem Aufruf von ChoosePixelFormat fest.

Die OpenGL-Kernfunktion glDrawBuffer wählt Puffer zum Schreiben und Löschen aus.

Pufferfunktionen