Freigeben über


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);