Front, Back e Outros Buffers
O OpenGL armazena e manipula dados de pixel em um framebuffer. O framebuffer consiste em um conjunto de buffers lógicos: buffers de cor, profundidade, acúmulo e estêncil. O buffer de cores em si consiste em um conjunto de buffers lógicos; esse conjunto pode incluir um front-left, um front-right, um back-left, um back-right e alguns buffers auxiliares. Um formato de pixel específico ou implementação de OpenGL pode não fornecer todos esses buffers. Por exemplo, a versão atual da implementação do OpenGL da Microsoft no Windows não dá suporte a imagens estereoscópicas, portanto, um formato de pixel não pode ter buffers de cores à esquerda e à direita. Além disso, a versão atual não dá suporte a buffers auxiliares. Para obter mais informações sobre buffers OpenGL e as funções OpenGL que operam neles, consulte o Manual de Referência do OpenGL e o Guia de Programação OpenGL.
A implementação do OpenGL no Windows pela Microsoft dá suporte ao buffer duplo de imagens. Essa é uma técnica na qual um aplicativo desenha pixels para um buffer fora da tela e, quando essa imagem está pronta para exibição, copia o conteúdo do buffer fora da tela para um buffer na tela. O buffer duplo permite alterações suaves de imagem, que são especialmente importantes para imagens animadas.
Dois buffers de cores estão disponíveis para aplicativos que usam buffer duplo: um buffer frontal e um buffer traseiro. Por padrão, os comandos de desenho são direcionados para o buffer de fundo (o buffer fora da tela), enquanto o buffer frontal é exibido na tela. Quando o buffer fora da tela estiver pronto para exibição, você chamar SwapBuffers e o Windows copiará o conteúdo do buffer fora da tela para o buffer na tela.
A implementação genérica usa um DIB (bitmap independente de dispositivo) como o buffer traseiro e a tela é exibida como o buffer frontal. Dispositivos de hardware e seus drivers podem usar abordagens diferentes.
O buffer duplo é uma propriedade de formato de pixel. Para solicitar buffer duplo para um formato de pixel, defina o sinalizador PFD_DOUBLEBUFFER na estrutura de dados PIXELFORMATDESCRIPTOR em uma chamada para ChoosePixelFormat.
A função de núcleo OpenGL, glDrawBuffer, seleciona buffers para gravação e limpeza.
Tópicos relacionados