Compartir a través de


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