( SDL_GL_SwapBuffers()
em particular)
Quando você desenha uma cena e chama buffers de troca, é rotina glClear()
a cena antes de desenhar qualquer coisa; se você não limpar, qual é o conteúdo do buffer? Isso é definido por alguma especificação ou varia de acordo com o driver?
Respostas:
Os detalhes de como trocar o buffer frontal e traseiro variam de plataforma para plataforma e, portanto, a resposta depende da plataforma.
De acordo com a documentação de referência GLX glXSwapBuffers :
No entanto, existe a extensão GLX_EXT_buffer_age :
Mas o Win32 SwapBuffers apenas diz:
E CGLFlushDrawable, para gráficos do OS X Core diz:
Finalmente, na função de troca de buffer padrão do OpenGL ES, eglSwapBuffers :
Então, o que tudo isso significa?
Dadas as restrições do GLX e CGL e o desejo de minimizar as alterações entre o OpenGL e o OpenGL ES, você também pode simplesmente assumir que o conteúdo é lixo.
fonte
Pelo que li o único comportamento é indefinido. Então, eu diria que não há garantia sobre qual será o conteúdo do buffer. Sem mencionar que algumas bibliotecas realmente envolvem uma chamada clara na chamada de buffers de troca.
fonte
O comportamento é indefinido; portanto, se você quiser preencher a tela inteira de qualquer maneira, considere deixar a coisa clara .. exceto em alguns ambientes (pelo menos em certas arquiteturas de ladrilhos) que realmente prejudicam o desempenho. A tela cheia limpa no início da renderização é uma operação tão comum que eu ficaria surpreso se não fosse bem otimizado em todas as plataformas de destino.
O motivo pelo qual NÃO É DEFINIDO é que, para muitas arquiteturas, tornar o estado do conteúdo definido seria uma sobrecarga extra, independentemente de como você definiria o padrão.
Quanto ao que você encontrará lá, posso adivinhar com base na experiência;
Em arquiteturas com buffer duplo (ou multi), como a maioria dos hardwares de vídeo para PCs de mesa, você provavelmente encontrará os "outros" dados do buffer. Isso não é garantido, pois não está na especificação, se alguma otimização estranha se beneficiar disso, eles coletarão os dados.
Em arquiteturas lado a lado, você pode encontrar os mesmos dados que o último quadro, alguns dados estranhamente distorcidos com base no tamanho do bloco ou praticamente qualquer outra coisa.
Então você tem algumas arquiteturas excêntricas (como o NDS) que podem fornecer praticamente qualquer coisa, já que sua definição de buffer não é exatamente o que você esperaria.
fonte