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 :

pb open gl texture.glut.


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Par défaut pb open gl texture.glut.
    chers amis bonsoir,
    voilà on nous a demandé de coder une environnement
    speedbrick (considerons cela comme un aquarium avec des
    poissons.. sauf que c'est des speed brick), developpé en c++,
    avec la librairie GLUT.... c'est la est notre soucis...
    on gere de la texture.... voici le probleme...
    on choisi la couleur gris pour la tete de notre "speed-brick",cette couleur represente
    sa carte génétique et
    permet differencier un speed brick parmis les autres... bref
    chacun a sa couleur qui est son code genetique.

    La dessus le speed brick grandit et on applique une autre
    couleur pour son corps a savoir "bleue" pour les garcons, "rose"
    pour les filles.
    Et c'est la que ca merde... dees qu'il grandit il devient tout
    bleu...au revoir la couleur de la tête (couleur "code génétique)

    ca doit pas être grand chose....

    par avance merci les kokos.

    voici notre speed_brick.h
    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
     
    Code :
     
       1. #ifndef P_SPEEDBRICK_H
       2. #define P_SPEEDBRICK_H
       3.
       4. #include <GLUT/glut.h>
       5.
       6. #include "P_Organisme.h"
       7. #include "M_Position.h"
       8.
       9. class P_SpeedBrick: public P_Organisme{
      10.     private :
      11.         GLubyte _Les_Couleurs_Tete[8][3];
      12.         GLubyte _Les_Couleurs_Corps[8][3];
      13.         GLuint _Identifiant_Texture, _Identifiant_Texture1;
      14.         GLUquadric* params;
      15.
      16.       public :
      17.         P_SpeedBrick(GLfloat *Diametre_Tete, GLfloat (*Couleur_Tete)[3]);
      18.         void Affiche_Toi(GLfloat (*Position)[3]);
      19.         void Affiche_Toi(GLfloat (*Position)[3], vector <Position> *Les_Anneaux);
      20.         void Affiche_Toi(GLfloat *Position_X, GLfloat *Position_Y, GLfloat *Position_Z);
      21.         void Affiche_Toi(GLfloat Position_X, GLfloat Position_Y, GLfloat Position_Z);
      22. };
      23.
      24. #endif
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Code :
     
       1. et voici la procedure d'affichage:
       2.
       3. void P_SpeedBrick::Affiche_Toi(GLfloat (*Position)[3],
       4. vector<Position> *Les_Anneaux){
       5. //cout << "plop"<<endl;
       6.
       7.
       8.
       9. /*
      10.     glPushMatrix();
      11.     glTranslatef((*Position)[Pos_X], (*Position)[Pos_Y], (*Position)[Pos_Z]);
      12.     glColor3d(0,1,0);
      13.     glutSolidSphere(_Diametre_Tete, 20, 20);
      14.     glPopMatrix();
      15. */
      16.
      17.     glTexImage1D
      18.     (
      19.         GL_TEXTURE_1D,     //Type : texture 1D
      20.         0,     //Mipmap : aucun
      21.         3,     //Couleurs (RGBA)
      22.         8,     //Largeur
      23.         0,     //Largeur du bord : 0
      24.         GL_RGB,     //Format : RGBA
      25.         GL_UNSIGNED_BYTE,     //Type des couleurs
      26.         _Les_Couleurs_Corps     //Addresse de l'image
      27.     );
      28.
      29.
      30.    
      31. glBindTexture(GL_TEXTURE_1D, _Identifiant_Texture1);     //Sélectionne la texture
      32.     gluQuadricTexture(params,GL_TRUE);
      33.
      34.     //glColor3d(_Couleur_Tete[Coul_R],_Couleur_Tete[Coul_V],_Couleur_Tete[Coul_B]);
      35.     for(int i=0;i<Les_Anneaux->size();i++){
      36.         glPushMatrix();
      37.         glTranslatef(Les_Anneaux->at(i)._Pos_X, Les_Anneaux->at(i)._Pos_Y, Les_Anneaux->at(i)._Pos_Z);
      38.     if(i%2==0)glColor3d(0,0,1); else glColor3d(0,1,1);
      39.     //GLfloat couleur[3] = {0.0f, 0.0f, 1.0f};
      40.     //glMaterialfv(GL_FRONT, GL_DIFFUSE, couleur);
      41.         glutSolidSphere(0.6, 20, 20);
      42.     //gluSphere(params, 0.6, 20,20);
      43.         glPopMatrix();
      44.     }
      45.
      46.    glPushMatrix();
      47.
      48.     glEnable(GL_TEXTURE_1D);
      49.     glDisable(GL_COLOR_MATERIAL);
      50.
      51.
      52.     glTexImage1D
      53.     (
      54.         GL_TEXTURE_1D,     //Type : texture 1D
      55.         0,     //Mipmap : aucun
      56.         3,     //Couleurs (RGBA)
      57.         8,     //Largeur
      58.         0,     //Largeur du bord : 0
      59.         GL_RGB,     //Format : RGBA
      60.         GL_UNSIGNED_BYTE,     //Type des couleurs
      61.         _Les_Couleurs_Tete     //Addresse de l'image
      62.     );
      63.
      64.     glBindTexture(GL_TEXTURE_1D, _Identifiant_Texture);     //Sélectionne la texture
      65.
      66.
      67.
      68.     glTranslatef((*Position)[Pos_X], (*Position)[Pos_Y], (*Position)[Pos_Z]);
      69.
      70.     gluQuadricTexture(params,GL_TRUE);
      71.     //glBindTexture(GL_TEXTURE_2D, mTextureID);
      72.     gluSphere(params, _Diametre_Tete, 20,20);
      73.
      74.     //glDisable(GL_TEXTURE_1D);
      75.     //glEnable(GL_COLOR_MATERIAL);
      76.
      77.     //glColor3d(_Couleur_Tete[Coul_R],_Couleur_Tete[Coul_V],_Couleur_Tete[Coul_B]);
      78.     //glutSolidSphere(_Diametre_Tete, 20, 20);
      79.     glPopMatrix();
      80.    
      81.     //glPopMatrix();
      82.
      83.     //glColor3f(1,1,1);
      84.     //glDisable(GL_COLOR_MATERIAL);
      85.     glDisable(GL_TEXTURE_1D);
      86. }
    et voici les screen avant et apres que ca merde...



    et voila apres que le spped brick aie grandi :'((
    nb: ne pas tenir compte des points rouge,
    c'est une autre famille de poisson...
    pas de soucis pour eux
    Images attachées Images attachées   

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    je sais pas si ca compte, mais a la sortie de ta fonction, du fait,

    glDisable(GL_TEXTURE_1D)

    donc quand tu entres de nouveaux dedans, le premier affichage soit disant texture ne l est plus

    d autre part, le premier appel a glTexImage1D (17) devrait etre precede par un glBindTexture correspondant (qui existe en ligne 31).

    note : a priori, tu ne dois jamais utiliser de texure 2D ailleurs dans le projet a moins de bien faire glDisable(GL_TEXTURE_2D)

    note: tu devrais initialiser (si possible) une bonne fois pour toute tes textures (glTexImage1D)

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    En effet,

    - On charge les textures une seule fois au début du programme généralement
    - Attention, tu ne fais pas les glEnable(GL_TEXTURE_1D) avant de t'en servir
    - Ton code est parsemé de code commenté, tu aurais pu le nettoyer avant

    Commence par cela,
    Jc

Discussions similaires

  1. Impossible d'appliquer une texture avec Glut et Opengl
    Par akrogames dans le forum OpenGL
    Réponses: 5
    Dernier message: 29/10/2010, 10h20
  2. Texture sur un objet 3D (openGL+glut)
    Par betsprite dans le forum OpenGL
    Réponses: 36
    Dernier message: 06/05/2010, 21h17
  3. Comment plaquer une texture 2D sur un objet GLUT ?
    Par zak62000 dans le forum GLUT
    Réponses: 2
    Dernier message: 03/03/2009, 15h37
  4. soucis de texture GLUT/GLAUX
    Par porco dans le forum OpenGL
    Réponses: 4
    Dernier message: 16/03/2007, 13h08

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