Condividi tramite


Disegno con buffer doppie

Il doppio buffer consente di regolare la transizione tra un'immagine e un'altra sullo schermo. I buffer di scambio vengono in genere alla fine di una sequenza di comandi di disegno. Per impostazione predefinita, l'implementazione Microsoft di OpenGL in Windows disegna nel buffer fuori schermo; al termine del disegno, si chiama la funzione SwapBuffers per copiare il buffer fuori schermo nel buffer sullo schermo. L'esempio di codice seguente prepara a disegnare, chiama una funzione di disegno e quindi copia l'immagine completata sullo schermo se il buffer doppio è disponibile.

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

L'esempio di codice seguente ottiene un contesto del dispositivo finestra, esegue il rendering di una scena, copia l'immagine nella schermata (per visualizzare il rendering) e quindi rilascia il contesto del dispositivo.

hdc = GetDC(hwnd); 
mySceneRenderingFunction(); 
SwapBuffers(hdc); 
ReleaseDC(hWnd, hdc);