cs_Fr33z
Messages postés6Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention17 juillet 2008
-
17 juil. 2008 à 13:51
goast_tu
Messages postés212Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention28 mai 2011
-
18 juil. 2008 à 10:33
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..
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 17 juil. 2008 à 18:01
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...
cs_Fr33z
Messages postés6Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention17 juillet 2008 17 juil. 2008 à 18:41
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?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 17 juil. 2008 à 18:47
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.
goast_tu
Messages postés212Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention28 mai 20112 18 juil. 2008 à 10:33
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