Ich habe diesen Code
glReadBuffer( GL_FRONT );
glReadPixels( 0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer );
Das funktioniert perfekt in allen Nvidia- und AMD-GPUs, die ich ausprobiert habe, aber es schlägt in fast jedem einzelnen integrierten Intel-Video fehl, das ich ausprobiert habe. Es funktioniert tatsächlich in einem sehr alten 945GME, schlägt aber in allen anderen fehl. Anstatt einen Screenshot zu bekommen, bekomme ich tatsächlich einen schwarzen Bildschirm.
Wenn es hilft, arbeite ich mit der Doom3-Engine, und dieser Code wird aus dem integrierten Bildschirmaufnahmecode abgeleitet. Übrigens, selbst mit dem Originalspiel kann ich auf diesen Intel-Geräten sowieso keine Bildschirmaufnahme machen. Ich vermute, dass sie den Standard nicht richtig implementieren oder so. Gibt es eine Problemumgehung dafür?