Tengo esta pieza de codigo
glReadBuffer( GL_FRONT );
glReadPixels( 0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer );
Que funciona perfectamente en todas las GPU Nvidia y AMD que he probado, pero falla en casi todos los videos integrados de Intel que he probado. Realmente funciona en un viejo 945GME, pero falla en todos los demás. En lugar de obtener una captura de pantalla, en realidad obtengo una pantalla negra.
Si ayuda, estoy trabajando con Doom3 Engine, y ese código se deriva del código de captura de pantalla incorporado. Por cierto, incluso con el juego original, no puedo hacer capturas de pantalla en esos dispositivos Intel de todos modos. Supongo que no están implementando el estándar correctamente o algo así. ¿Hay una solución para esto?
Respuestas:
Históricamente, los gráficos de Intel siempre han tenido problemas para leer o dibujar desde el búfer frontal. Una buena regla general que sigo con Intel es esta: si no puede hacerlo en D3D, entonces ni siquiera intente hacerlo en OpenGL, incluso si la especificación dice que debería poder hacerlo, y D3D no permite el acceso al búfer frontal de esta manera, así que ... solo usa GL_BACK en su lugar.
fuente