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 :

Probleme d'affichage image OpenGL


Sujet :

GLUT

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut Probleme d'affichage image OpenGL
    Bonjour à tous.

    Voila j'ai deux petits problèmes avec OpenGL.

    Pour le premier, je voudrais, au milieu d'un programme, affiché mon image et qu'ensuite le programme continu.
    J'utilise ce code (test est la structure ou toutes les info sont stockées):
    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
    Main:
    /************************************* Initialization OpenGL ***************************************/
    /* Initialize GLUT state - glut will take any command line arguments
    that pertain to it or X Windows */
    glutInit(&argc, argv);
    
    /* Select type of Display mode: Single buffer, RGB color*/
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    /***************************************************************************************************/
    
    Chargement de l'image
    
    /******************* Display the image thanks to OpenGL *************************/
    glutInitWindowSize(test.Largeur(), test.Hauteur());
    
    /* the window starts at the upper left corner of the screen */
    glutInitWindowPosition(0,0);
    
    /* Open a window */
    window1 = glutCreateWindow(test.GetNom());
    
    /* Initialize our window. */
    InitGL();
    
    /* Register the function to do all our OpenGL drawing. */
    glutDisplayFunc(&DrawScene);
    
    /* Start Event Processing Engine */
    glutMainLoop();
    /***************************************************************************/
    
    Fonction drawscene:
    /* The main drawing function. */
    void DrawScene(){
     	// Clear The Screen 
    	glClear(GL_COLOR_BUFFER_BIT);
    
    	glDrawPixels( test.Hauteur(), test.Largeur(), GL_LUMINANCE, GL_UNSIGNED_BYTE, test.GetImage() );
    
    	/* don't wait! start processing buffered OpenGL routines */
        glFlush ();
    }
    Mon problème est que le programme s'arrête quand il exécute glutMainLoop() puisqu'il renre dans une boucle infinie.
    Je pense que c'est normal, le problème c'est que si je le met à la fin, mon programme affiche les images qu'a la fin.
    Et j'aimerais qu'elle s'affiche au fur et à mesure (En faite j'ai plusieurs images à afficher au fur et a mesure).

    Est-ce qu'il y a une fonction pour afficher l'image et continuer le programme après, en évitant d'utiliser la boucle infinie en quelque sorte !!



    Mon second problème est l'image affichée. Elle n'est bonne.
    Voici ce que ca donne:



    Comme vous pouvez le voir elle est toute étirée !!
    l'image originale est Lena.pgm, en P2.

    Avec une image en P5, j'arrive à afficher l'image parfaitement.
    J'utilise la même méthode de stockage des pixels donc je ne pense pas que cela vienne de ca !!

    La je pense que j'ai un souci avec ma fonction d'affichage:
    glDrawPixels( test.Hauteur(), test.Largeur(), GL_LUMINANCE, GL_UNSIGNED_BYTE, test.GetImage() );

    Est-ce que vous sauriez résoudre ca?
    (J'ai essayé en inversant Hauteur et Largeur mais ca n'a rien changé ou en mettant GL_BYTE mais la ca m'a sorti une exception à l'éxécution)
    Comme matrice je lui envoi la matrice de l'image et elle est sous forme de byte*.


    Merci beaucoup pour votre aide !!!!

  2. #2
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par nonolerobot77 Voir le message
    Est-ce qu'il y a une fonction pour afficher l'image et continuer le programme après, en évitant d'utiliser la boucle infinie en quelque sorte !!
    Non, il existe une extension (mais je ne me souviens plus du nom) qui le permet mais sinon ce n'est pas possible. Tu peux utiliser glIdleFunction qui permet ensuite de récupérer la main et faire des calculs dedans.


    Mon second problème est l'image affichée. Elle n'est bonne.
    [/QUOTE]

    Je ne sais pas pourquoi tu as ce problème mais pourquoi utilises-tu glDrawPixels ? Crée une texture et affiche là, ce sera sûrement plus simple et plus rapide.

    Jc

  3. #3
    Nouveau membre du Club Avatar de Trillian
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par nonolerobot77 Voir le message
    Bonjour à tous.
    Mon second problème est l'image affichée. Elle n'est bonne.
    Voici ce que ca donne:

    http://osiris.ubishops.ca/~achollet/...ge_Deforme.JPG

    Comme vous pouvez le voir elle est toute étirée !!
    l'image originale est Lena.pgm, en P2.

    Avec une image en P5, j'arrive à afficher l'image parfaitement.
    J'utilise la même méthode de stockage des pixels donc je ne pense pas que cela vienne de ca !!

    La je pense que j'ai un souci avec ma fonction d'affichage:
    glDrawPixels( test.Hauteur(), test.Largeur(), GL_LUMINANCE, GL_UNSIGNED_BYTE, test.GetImage() );

    Est-ce que vous sauriez résoudre ca?
    (J'ai essayé en inversant Hauteur et Largeur mais ca n'a rien changé ou en mettant GL_BYTE mais la ca m'a sorti une exception à l'éxécution)
    Comme matrice je lui envoi la matrice de l'image et elle est sous forme de byte*.
    Comment fais-tu pour lire l'image? Peux-tu nous montrer ta fonction de lecture et les en-têtes des deux images?
    Les Bulgares ne parlent ni Français, ni Coréen, mais se débrouillent toujours pour obtenir des réductions sur les géraniums.
    Correction, certain(e)s bulgares parlent français...

Discussions similaires

  1. Probleme d'affichage image dans IE
    Par Dolph Inger dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/03/2011, 09h45
  2. Problem d'affichage avec OpenGl
    Par moulzo dans le forum OpenGL
    Réponses: 12
    Dernier message: 24/01/2010, 15h46
  3. Réponses: 3
    Dernier message: 08/04/2009, 14h52
  4. probleme d'affichage image firefox
    Par siddi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/02/2009, 18h42
  5. Probleme d'affichage image
    Par Clemnt dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/06/2008, 10h56

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