Eu tenho esse pedaço de código
glReadBuffer( GL_FRONT );
glReadPixels( 0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer );
O que funciona perfeitamente em todas as GPUs da Nvidia e AMD que eu tentei, mas falha em quase todos os vídeos integrados da Intel que eu tentei. Na verdade, ele funciona em um 945GME muito antigo, mas falha em todos os outros. Em vez de obter uma captura de tela, estou recebendo uma tela preta.
Se ajudar, estou trabalhando com o Doom3 Engine e esse código é derivado do código de captura de tela embutido. A propósito, mesmo com o jogo original, não posso capturar a tela nesses dispositivos intel. Meu palpite é que eles não estão implementando o padrão corretamente ou algo assim. Existe uma solução alternativa para isso?
Respostas:
Os gráficos da Intel sempre tiveram problemas com a leitura ou o desenho do buffer frontal. Uma boa regra geral que sigo com a Intel é esta - se você não pode fazê-lo no D3D, nem tente fazê-lo no OpenGL, mesmo que as especificações digam que você deve ser capaz - e o D3D não permita acesso ao buffer frontal dessa maneira, então ... basta usar GL_BACK.
fonte