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

GLUT Discussion :

[débutant] Problèmes à l'exécution


Sujet :

GLUT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut [débutant] Problèmes à l'exécution
    Bonjour,

    je ne sais pas si ça a un rapport direct avec OpenGL/GLUT ou pas...
    Voilà, je développe avec OpenGL à la fac sous Unix (Fedora Core), et chez moi sous Cygwin (avec WinXP). J'ai importé mes fichiers de la fac à chez moi, et...ça ne passe pas.
    Je m'explique : à la fac, tout compile et s'exécute sans problème. Chez moi par contre ça compile, mais à l'exécution, j'ai une Segmentation fault (core dumped).
    Après avoir isolé le problème (je pense), c'est apparement à cause des éléments en 3D que l'erreur est générée. J'ai remplacé l'affichage de tous les objets 3D en objets 2D et ça marche bien.

    Ca n'a pas l'air d'avoir de rapport avec le code en lui-même, mais plutôt avec les objets2D/3D...
    Une idée svp ?

    Merci.

    EDIT :
    Après d'autres tests, apparement les objets 3D comme glutSolidCube passent, et d'autres comme glutWireSphere ou glutSolidCone provoquent l'erreur Segmentation fault (core dumped).

  2. #2
    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 : 44
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Il faudrait montrer un bout de code qui montre le problème. Généralement, il y a une corromption mémoire qui est la cause du problème...

    Est-ce que tu fais bien tous les tests qu'il faut, tu ne sors jamais des tableaux, dépasses jamais la zone allouée, etc?

    Jc

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    J'ai réduit au minimum le code afin de n'afficher qu'un simple cône et une sphere en dessous du cône.

    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
     
    #include <GL/glut.h>
     
    /* variables pour les translations du vaisseau */
    float tx = 0.;
    float tx1 = 0.5;
     
     
    /* taille de l'ecran */
    float t = 10.;
     
    static void reshape(int width, int height)
    {
      glViewport(0, 0, (GLint)width, (GLint)height);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      gluOrtho2D(-t, t, -t, t);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
    }
     
     
    static void display(void)
    {
      glClearColor(0, 0, 0, 0);
      glClear(GL_COLOR_BUFFER_BIT);
      glLoadIdentity();
     
      glPushMatrix(); /* debut mouvements du vaisseau */
      glTranslatef(0, -5, 0);
      glTranslatef(tx, 0, 0);
     
      glPushMatrix();
      /* un cone */
      glColor3f(1, 0, 0);
      glutSolidCone(1.5, 1, 3, 1);
     
      /* une sphere juste en dessous */
      glColor3f(0, 0, 1);
      glTranslatef(0, -1, 0);
      glutWireSphere(0.3, 20, 20);
      glPopMatrix();
     
      glPopMatrix(); /* fin mouvements du vaisseau */
     
      glFlush();
      glutSwapBuffers();
    }
     
     
    int main(int argc, char *argv[])
    {  
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
      glutCreateWindow("TEST");
      glutDisplayFunc(display);
      glutReshapeFunc(reshape);
     
      glutMainLoop();
     
      return 0;
    }
    Lorsque j'enlève la sphere, le cône s'affiche bien. Mais j'ai une erreur si je laisse tel quel.
    C'est peut-être un problème lors de l'empilement des matrices ?

    Merci.

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    bonjour,

    il manque un GLUT_DEPTH dans glutInitDisplayMode pour faire de la 3D et glEnable(GL_DEPTH) ; glEnable(GL_DEPTH_TEST) ;
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    J'ai ajouté GLUT_DEPTH dans mon glutInitDisplayMode, et un glEnable(GL_DEPTH_TEST) mais rien n'y fait.
    J'ai même ajouté GL_DEPTH_BUFFER_BIT à mon glClear.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // dans le display
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    [...]
    // dans une fonction init()
    glEnable(GL_DEPTH_TEST);
    [...]
    // dans le main
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
    Je pense que c'est un problème lié au système sur lequel j'exécute le code.
    A la fac (sous Fedora Core) ça compile et exécute.
    Chez moi (sous WinXP, Cygwin) ça compile mais Segmentation fault (core dumped) à l'exécution.

    Tant pis je ferai avec...

    Merci à vous .

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/04/2009, 10h10
  2. Débutant : Problème de compilation ou d'exécution
    Par infolove dans le forum Général Java
    Réponses: 14
    Dernier message: 29/01/2008, 22h08
  3. [Débutant] Problème d'exécution.
    Par Le Barde dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/01/2008, 11h58
  4. Réponses: 6
    Dernier message: 22/11/2007, 10h42
  5. [Débutant] problème d'exécution d'une servlet
    Par Le Pharaon dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/01/2007, 13h01

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