Bonsoir, je développe un simulateur 3D depuis quelques mois avec OpenGL et je souhaiterais pouvoir réaliser des screenshots du contenu de ma fenêtre pour les stocker dans des textures ; je me suis donc tourné vers la fonction glCopyTexImage2D(). Seulement, quelque chose m'échappe : Dans quoi est stocké le contenu du buffer écran ?? La fonction n'a pas de valeur de retour et aucun paramètre passé par adresse. J'ai pensé qu'il fallait "binder" la texture avant d'appeler*glCopyTexImage2D()*et que la fonction stockait le contenu dans la texture bindée, j'ai alors fait un test censé afficher la texture dans une image située en bas à gauche de la fenêtre mais cela ne donne qu'un carré blanc. Voici le code :
Voilà, j'ignore où est le problème, j'ai fait quelques recherches sur cette fonction qui m'est inconnue et j'ai un peu de mal à la comprendre.Code:void Capture(void) { glDisable(GL_DEPTH_TEST); //Passage en 2D glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); GLuint texture; //Création texture glBindTexture(GL_TEXTURE_2D,texture); glCopyTexImage2D(GL_TEXTURE_2D,10,GL_RGBA,0,0,800,600,0); glBegin(GL_QUADS); //Dessin carré glTexCoord2i(0,0); glVertex2i(-1,-1); glTexCoord2i(0,1); glVertex2i(-1,0); glTexCoord2i(1,1); glVertex2i(0,0); glTexCoord2i(1,0); glVertex2i(0,-1); glEnd(); glFlush(); //Mise à jour buffer écran SDL_GL_SwapBuffers(); SDL_Delay(1000); glMatrixMode(GL_PROJECTION); //Passage en 3D glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); glEnable(GL_DEPTH_TEST); }
Merci par avance pour votre aide.
-----