IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

problème texture 2D


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut problème texture 2D
    Bonjour,

    en essayant ed reprendre un code d'il y a longtemps avant de la modifier, j'ai euy quelques surprise :

    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
    glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
    	glPushMatrix();
    		glScaled(zoom,zoom,zoom);
    		// glRotated(-angle,0.0,1.0,0.0);
    		glTranslated(numero*0.2,0.0,n*0.2);
    		n++;
     
    		glGenTextures(1, &nom_tex);
    		glBindTexture(GL_TEXTURE_2D, nom_tex);
    		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    		glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,TAILLE_ICON,TAILLE_ICON,0,GL_RGB,GL_UNSIGNED_BYTE,this->iconDefault);
    		glColor4f(1.0,1.0,1.0,1.0);
     
    		glBegin (GL_POLYGON);
    			glNormal3f(1.0,0.0,0.0);
    			glTexCoord2f(0.0,1.0);   glVertex3f( 0.5, 0.5, 0.0);
    			glTexCoord2f(0.0,0.0);   glVertex3f( 0.5,-0.5, 0.0);
    			glTexCoord2f(1.0,0.0);   glVertex3f( -0.5,-0.5,-0.0);
    			glTexCoord2f(1.0,1.0);   glVertex3f( -0.5, 0.5,-0.0);
    		glEnd ();
    	glPopMatrix();
    	glDeleteTextures(1,&nom_tex);
    Normalement ça me trace de un carré texturé (texture "int ***this->iconDefault").

    La texture est correcte (j'ai vérifié en créant une image ppm).

    J'ai activé les textures : glEnable(GL_TEXTURE_2D);

    Où est mon erreur ?

  2. #2
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Citation Envoyé par Rniamo Voir le message
    ..., j'ai euy quelques surprise :
    ...
    Normalement ça me trace de un carré texturé (texture "int ***this->iconDefault").
    ...

    Où est mon erreur ?
    Qu'est ce que cela te donne comme problème ?

  3. #3
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut
    Au lieu de voir mon image, j'ai l'impression que les couleurs sont aléatoires :

    http://pix.nofrag.com/7/a/1/b844ec0a...d40c96b46.html

  4. #4
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Le premier problème que je vois est que si tu appelles le code que tu as mis plus haut à chaques frame, tu va créer et détruire ta texture a chaque frame .. et c'est très couteux.

    Il faut donc la créer à l'initialisation de ton application et utilisé "glBindTexture" pour l'utiliser quand tu dessines ta frame.

    De plus, vérifie que tes paramètres de textures sont bons par rapport à tes données (problème de type) et que l'intialisation d'OpenGL soient correctement faite

  5. #5
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut
    Je vient de vérifier ça me semble bon au niveau des prototypes et types :

    voici le code :
    code

    les variables (icondefault en particulier) sont dans le .hh, l'initialisation dans : void GLScene::on_realize(), la scène dans : bool GLScene::on_expose_event(GdkEventExpose* event).

  6. #6
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Tu dois faire glTexImage2D dans on_realize() au moment de l'initialisation de ta texture. Elle te permet d'envoyer les données de ton image à openGL.

    A la place, il faut appelé glBindTexture() pour placer ta texture créée comme texture active juste avant de dessiner ton quadrilatère.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème texture 2D
    Par Invité dans le forum OpenGL
    Réponses: 8
    Dernier message: 24/08/2010, 10h13
  2. {DirectX11} problème textures
    Par LastSpear dans le forum DirectX
    Réponses: 5
    Dernier message: 23/08/2010, 19h13
  3. [Delphi / DeviL / OpenGL] Problème Texture...
    Par tim53000 dans le forum Langage
    Réponses: 3
    Dernier message: 26/03/2009, 18h42
  4. Problème texture SDL
    Par otspot dans le forum OpenGL
    Réponses: 2
    Dernier message: 16/08/2007, 17h51
  5. [XNA] Problème textures objet DirectX
    Par Gurdil dans le forum XNA/Monogame
    Réponses: 1
    Dernier message: 25/05/2007, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo