Compartilhar via


Desenhando com buffers duplos

Buffers duplos suavizam a transição entre uma imagem e outra na tela. A troca de buffers normalmente ocorre no final de uma sequência de comandos de desenho. Por padrão, a implementação da Microsoft do OpenGL no Windows desenha para o buffer fora da tela; ao concluir o desenho, você chama a função SwapBuffers para copiar o buffer fora da tela para o buffer na tela. O exemplo de código a seguir se prepara para desenhar, chama uma função de desenho e copia a imagem concluída na tela se o buffer duplo estiver disponível.

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

O exemplo de código a seguir obtém um contexto de dispositivo de janela, renderiza uma cena, copia a imagem para a tela (para mostrar a renderização) e libera o contexto do dispositivo.

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