il faut utiliser
glReadPixels pour lire directement les pixels dans la carte graphique.
si tu peux te donner la peine d'utiliser DevIL (
http://www.imagelib.org, je te conseille vivement de l'utiliser), l'opération est alors très simple :
initialisation complète de DevIL :
ilInit();
iluInit();
ilEnable(IL_ORIGIN_SET);
ilOriginFunc(IL_ORIGIN_UPPER_LEFT);
création d'une image :
ILuint id;
ilGenImages(1, &id);
ilBindImage(id);
ilTexImage(ScreenWidth, ScreenHeight, 1, 3, IL_RGB, IL_UNSIGNED_BYTE, NULL);
copie du framebuffer d'OpenGL actuellement affiché vers l'image :
glReadPixels(0, 0, ScreenWidth, ScreenHeight, GL_RGB, GL_UNSIGNED_BYTE, ilGetData());
sauvegarde de l'image dans un fichier :
ilSaveImage("file.ext");
destruction de l'image :
ilDeleteImages(1, &id);
sachant que "file.ext" peut être n'importe quel type d'image supporté par DevIL, et il y en a un très grand nombre.
