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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
void Capture(void)
{
    glDisable(GL_DEPTH_TEST);		//Passage en 2D
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
 
    GLuint texture;
    glBindTexture(GL_TEXTURE_2D,texture);
    glCopyTexImage2D(GL_TEXTURE_2D,10,GL_RGBA,0,0,800,600,0);	//Capture
 
    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 tampon
    SDL_GL_SwapBuffers();
 
    SDL_Delay(1000);
 
    glMatrixMode(GL_PROJECTION);	//Passage en 3D
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
    glEnable(GL_DEPTH_TEST);
}
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.
Merci par avance pour votre aide.