Capture d'écran et plaquage sur un quad

Signaler
Messages postés
6
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
17 juillet 2008
-
goast_tu
Messages postés
212
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
28 mai 2011
-
Bonjour à tous.

Après avoir bien cherché sur internet divers tutoriaux, aides, et manuels, je n'ai toujours pas compris comment a partir d'un écran, faire une copie de cet écran dans une texture pour ensuite réappliquer cette texture sur un polygone par exemple.

Je n'arrive pas a trouver les erreurs de ce bout de code :

glEnable(GL_TEXTURE_2D);
GLuint RenderedTex; // Je déclare ma texture
glGenTextures(1,&RenderedTex); // Je la définie..
glBindTexture(GL_TEXTURE_2D,RenderedTex); //.. Et la sélectionne


// Ici je dessine le triangle que je veux "copier"
glBegin(GL_TRIANGLES);
glColor3ub(255,0,0);
glVertex2d(-0.5,-0.5);
glColor3ub(0,255,0);
glVertex2d(0,0.5);
glColor3ub(0,0,255);
glVertex2d(0.5,-0.5);
glEnd();

glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGB,0,0,
RESOLUTION_LARGEUR,RESOLUTION_HAUTEUR,0); //Ici je fais la copie de l'écran tout entier dans la texture active, soit RendererTexture

// Et là je plaque la texture sur un quad...
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(-0.5, -0.5f) ;
glTexCoord2f(1, 0); glVertex2f(0.5, -0.5f) ;
glTexCoord2f(1, 1); glVertex2f(0.5, 0.5f) ;
glTexCoord2f(0, 1); glVertex2f(-0.5, 0.5f) ;
glEnd();


Le problème est que ce qui est affiché est le quad, mais avec la couleur bleu (la dernière sélectionnée)... Hors j'aimerai avoir le triangle déssiné sur le quad..

Merci de m'éclairer !

4 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
De la doc d'openGL:
glCopyTexImage2D defines a two-dimensional texture image, or cube-map texture image with pixels from the current GL_READ_BUFFER.

Manque peut etre un appel à glReadBuffer(...);

Tu binds ta texture dès le début alors qu'elle ne sert que pour le quad en fin => Pas logique.
Tu créés une texture a chaque frame, il semblerait => Cata...
Messages postés
6
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
17 juillet 2008

Merci pour la réponse, mais j'avoue que je ne comprend pas trop...

Je lis dans la documentation que glReadBuffer sert a sélectionner un tampon... Pourquoi y aurait-il d'autres tampons que celui dans lequel je suis entrain de dessiner?
Je comprend pas non plus comment glCopyTexImage2D "sait" dans quelle texture copier l'écran?

Merci beaucoup pour la réponse en tous cas
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Bas tu as en général deux tampons... celui dans lequel tu dessines et celui qui est affiché par l'écran. Donc ca fait deja deux, et on peut en avoir d'autre.

glCopyTexImage2D prend probablement la texture courante, cad celle que tu as lié lors du dernier appel a glBindTexture.
Messages postés
212
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
28 mai 2011
1
Salut

Je ne suis pas sur mais si je ne me trompe pas il faut d'abord creer une texture vide avec glTexImage2D et seulement après tu peut écrire dedans avec glCopyTexImage2D

++