Zeichnen mit Doppelpuffern
Doppelpuffer glätten den Übergang zwischen einem Bild und einem anderen auf dem Bildschirm. Das Austauschen von Puffern erfolgt in der Regel am Ende einer Sequenz von Zeichnungsbefehlen. Standardmäßig wird bei der Microsoft-Implementierung von OpenGL in Windows der Off-Screen-Puffer verwendet. Wenn das Zeichnen abgeschlossen ist, rufen Sie die SwapBuffers-Funktion auf, um den Off-Screen-Puffer in den Bildschirmpuffer zu kopieren. Das folgende Codebeispiel bereitet das Zeichnen vor, ruft eine Zeichnungsfunktion auf und kopiert dann das fertige Bild auf den Bildschirm, wenn doppelte Pufferung verfügbar ist.
void myRedraw(void)
{
// set up for drawing commands
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1.0, 0.1, 100.0);
// draw our objects
myDrawAllObjects(GL_FALSE);
// if we're double-buffering ...
if (bDoubleBuffering)
// ...draw the copied image to the screen
SwapBuffers(hdc);
}
Im folgenden Codebeispiel wird ein Fenstergerätekontext abgerufen, eine Szene gerendert, das Bild auf den Bildschirm kopiert (um das Rendering anzuzeigen) und dann den Gerätekontext freizugeben.
hdc = GetDC(hwnd);
mySceneRenderingFunction();
SwapBuffers(hdc);
ReleaseDC(hWnd, hdc);