Problèmes de texture

asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005 - 25 août 2004 à 19:37
cs_tibur Messages postés 101 Date d'inscription samedi 9 février 2002 Statut Membre Dernière intervention 5 mai 2009 - 2 sept. 2004 à 00:40
Bonjour!
J'ai des problèmes de textures avec OpenGL, en effet lorsque j'utilise diverse sources pour charger un bmp et le charger en mémoire. Après lorsque je veux la "coller sur un rectange elle ne s'affiche pas! J'utilise pourtant des images de taille 2^n*2^n
Je programme sous dev C++

6 réponses

gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
25 août 2004 à 20:35
Est-ce tu peux poster le code? question vague! peut etre tu n'as pas mis glEnable(GL_TEXTURE_2D)???
0
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
26 août 2004 à 08:24
Voici le prog
#include <windows.h>
#include <GL/glut.h>
#include <Gl/gl.h>
#include <stdio.h>
#include <conio.c>

#define w 1024
#define h 860

/*-------------------------FONCTONS-------------------------------------------*/
GLuint id;//id de la texture
void Display();//affiche
void Reshape(int we,int he);//s'occupe de la caméra
GLuint Textures();

GLuint Textures()
{
int Data[12]={1,0,0,//le pointeur sur la texture
0,0,1,
1,0,0,
0,0,1};

glGenTextures(1,&id);
glBindTexture(GL_TEXTURE_2D,id);
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexImage2D
(
GL_TEXTURE_2D, //target
0, //mipmap level
3, //nb couleurs
1, //largeur
1, //hauteur
0, //largeur du bord
GL_RGB, //type des couleurs
GL_INT, //codage de chaque composante
Data //Image
);
return id;
}
/*---------------------------MAIN---------------------------------------------*/

int main(int argc, char *argv[])
{
id=Textures();

glutInit(&argc,argv);/*on initialise OpenGL*/
glutInitDisplayMode(GLUT_RGBA GLUT_DOUBLE glutInitWindowSize(1024,860);/*la taile de la window*/
glutInitWindowPosition(0,0);
glutCreateWindow("Test pour OpenGL");/*on la crée*/
glutReshapeFunc(Reshape);/*gestionnaires*/
glutDisplayFunc(Display);/*les fonctions*/
glutSpecialFunc(Clavier);
glutIdleFunc(Idle);
//Parametre du blending
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//activation du blending
glEnable(GL_BLEND);
glutMainLoop(); // lance le gestionnaire glut

}

void Display(){
glClearColor(1,1,1,0);
glClear(GL_COLOR_BUFFER_BIT); // efface le frame buffer

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,id);
glColor4d(0,0,0,0);

glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2d(100,100);
glTexCoord2f(0,1);
glVertex2d(100,200);
glTexCoord2f(0.95,1);
glVertex2d(200,200);
glTexCoord2f(1,0);
glVertex2d(200,100);

glEnd();
glFinish();
glutSwapBuffers();

}
void Reshape(int we,int he)
{

gluOrtho2D(0,we,-he/2,he/2); // définition de la projection
}

Alors celle-ci est une source de mon "crû" mais j'en ai téléchargées des tonnes que je ne réussissait pas à compiler
0
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
26 août 2004 à 21:48
1) dans la fn Texture(): avec glTexImage2D, la taille de l'image doit etre une puissance de 2 . Ici 1x1.
2) dans Display(): glColor4d(0,0,0,0); tu a mis en transparent l'image (ici alpha = 0), alors rien qui s'affiche. plutôt glColor4d(1,1,1,1);
0
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
27 août 2004 à 14:40
Pourtant 1 = 2^0!
C'est normal c'est que déconcerté par l'échec de la texture j'en ai fait une de 1x1 mais j'ai recompilé en corrigeant ca marche tjrs pas !!(bouhhhhhh)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
28 août 2004 à 09:59
Merci pour tes réponses mais j'ai trouvé glEnable textures devait aller après la création de la fenêtre ainsi que le chargement de l'image
0
cs_tibur Messages postés 101 Date d'inscription samedi 9 février 2002 Statut Membre Dernière intervention 5 mai 2009
2 sept. 2004 à 00:40
Je te conseille aussi de checker les erreurs opengl (au moins apres l'init d'opengl, et au debut, a la fin de ta fonction Display)

Tu peut utiliser :

assert(glGetError()==GL_NO_ERROR);

(a besoin d'un bon vieux #include )

tib
0
Rejoignez-nous