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