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