Dibujo con búferes dobles
Los búferes dobles suavizan la transición entre una imagen y otra en la pantalla. El intercambio de búferes suele aparecer al final de una secuencia de comandos de dibujo. De forma predeterminada, la implementación de Microsoft de OpenGL en Windows se dibuja en el búfer fuera de pantalla; cuando se completa el dibujo, se llama a la función SwapBuffers para copiar el búfer fuera de pantalla en el búfer en pantalla. El ejemplo de código siguiente se prepara para dibujar, llama a una función de dibujo y, a continuación, copia la imagen completada en la pantalla si hay disponible el almacenamiento en búfer doble.
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);
}
El ejemplo de código siguiente obtiene un contexto de dispositivo de ventana, representa una escena, copia la imagen en la pantalla (para mostrar la representación) y, a continuación, libera el contexto del dispositivo.
hdc = GetDC(hwnd);
mySceneRenderingFunction();
SwapBuffers(hdc);
ReleaseDC(hWnd, hdc);