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 :

Affichage d'image avec OpenGL


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut Affichage d'image avec 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().
    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 ??
    Comme mettre l'image en fond en faite.



    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.

    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
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut
    Je continu à faire des essais avec on programme encore, et en faite, j'arrive bien à afficher une image en P5 mais pas une image en P2 (Je vous ai mis un exemple de ce que ca fait avec une P2 dans mon premier post !!!) !!
    alors que j'utilise la meme façon de stocker les pixels !!

    Est-ce que quelqu'un saurait d'ou cela peut provenir ??

    Et pour mon probleme de boucle infini a cause de glutMainLoop(), quelqu'un aurait une solution ??

    Merci d'avance !!

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 249
    Par défaut
    C'est tout a fait normal de mettre le glutMainLoop à la fin. Là, tu as défini ta fonction "display" avec glutDisplayFunc(&DrawScene);
    De la même manière tu peux définir une fonction "idle", c'est à dire une fonction que glut appellera en permanence (et non pas uniquement lorsqu'il nécessite un rafraichissement de la fenetre).
    Pour ça tu dois appeler " glutIdleFunc(ta_fonction_idle); "

    Quand tu dis que t'as plusieurs images à afficher au fur et à mesure, c'est-à-dire que tu veux mettons afficher la première image, puis attendre X secondes, puis afficher la seconde etc? Dans ce cas il faut que tu mettes en place un système de timer, il me semble que glut a une méthode du style glutTimerFunc qui prend une callback en paramètre.

  4. #4
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut
    Ok je te remercie pour ton aide !!
    Je vais voir du coté de idle !!

    Sinon, pour mon probleme de P2 quelqu'un saurait pourquoi elle s'affiche mal ??
    Alors qu'avec un P5 ca s'affiche parfaitement !?!

Discussions similaires

  1. Afficher une image avec opengl
    Par kmaniche dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/02/2006, 09h04
  2. [ImageMagick] Affichage d'image avec la fonction imagejpeg()
    Par yuri dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 16/12/2005, 13h40
  3. Affichage d'image avec API Win32
    Par Chess0 dans le forum Windows
    Réponses: 12
    Dernier message: 14/12/2005, 07h14
  4. PB affichage d'image avec IE
    Par arturo dans le forum Modules
    Réponses: 6
    Dernier message: 25/09/2003, 17h28
  5. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44

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