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

Qt Discussion :

[OpenGL] Pas d'affichage dans le widget OpenGL [2D/3D]


Sujet :

Qt

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 41
    Points : 21
    Points
    21
    Par défaut [OpenGL] Pas d'affichage dans le widget OpenGL
    Bonjour à tous.

    J'ai récemment dû réécrire une fonction qui lisais un fichier et remplissait un tableau de points dans un soucis de simplification et de type de dessin demandé. Ma fonction maintenant lis un fichier et dessine directement les points en lisant le fichier, en sélectionnant au préalable un type qui dépends du contenu du fichier (si la première ligne contient un symbole particulier on change de style de dessin). Le seul ennui, bah c'est que ça dessine rien à l'écran...

    Voilà ma fonction :
    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
    void drawFromFile(string filename)
    {
       ifstream file(filename.c_str()); //Ouverture du fichier.
       string nom_motif;
       point p1, p2;
       int x1, y1, x2, y2;
       bool dots = true;
     
       if (!file) //Si le fichier n'est pas lu...
       {
           cerr << "setDataTable : can't read " << filename << "." << endl;
           throw std::runtime_error("file not opened: "+ filename); //Erreur ! + envoi d'erreur.
       }
     
       string line;
       while (getline(file,line)) //Tant qu'on lit des lignes dans le fichier.
       {
            istringstream iss(line);
     
            iss >> nom_motif; //Le premier élément trouvé se place dans la variable nom_motif
            if (nom_motif[0]=='#')
            {
                 dots = false;
                 cout << "dots passé à false" << endl;
                 continue; //Si ce premier élément
            //commence par # ou un espace, on ignore le reste de la ligne.
            }
     
            if (dots)
            {
     
                iss >> x1;
                iss >> y1;
     
     
                p1.setX(x1);
                p1.setY(y1);
                cout << fixed << p1.getX() << " " << p1.getY() << endl;
     
                drawDot(p1);
            }
            else
            {
                iss >> x1;
                iss >> y1;
                iss >> x2;
                iss >> y2;
     
     
                p1.setX(x1);
                p1.setY(y1);
                p2.setX(x2);
                p2.setY(y1);
                cout << fixed << p1.getX() << " " << p1.getY() << " " << p2.getX() << " " << p2.getY() << endl;
     
                drawLine(p1, p2);
            }
     
           //Mise en place des éléments sous forme de points dans le vecteur passé en paramètre.
     
       }
       cout << "Fin fonction drawFromFile" << endl;
       file.close();
     
    }
    Et voilà le contenu de la classe que j'utilise pour le widget openGL que j'ai créé :

    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
     
    #include "VistaWindow.h"
     
    VistaWindow::VistaWindow(QWidget *parent)
        : VistaWidget(60, parent, "VISTA")
    {
     
    }
     
    void VistaWindow::initializeGL()
    {
        glShadeModel(GL_SMOOTH); //Sélection du shading.
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //Sépcification des valeurs pour lesquelles
        //le rouge, le bleu, le vert et la transparence sont nuls.
        glClearDepth(1.0f); //Définie la valeur pour laquelle on est "au fond" du repère.
        glEnable(GL_DEPTH_TEST); //Active les comparaisons de profondeur.
        glDepthFunc(GL_LEQUAL); //Définie la valeur utilisée pour les fonctions de
        //comparaison de profondeur. Ici, plus petit ou égal.
        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //Définie des options de qualité.
        //Ici : qualité la plus haute, correction de la perspective.
     
    }
     
    void VistaWindow::resizeGL(int width, int height)
    { //Redéfinit les vertex en cas de changement de taille de la fenêtre.
        if(height == 0)
            height = 1;
        glViewport(0, 0, width, height);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, 0.1f, 100.0f);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        //glClearColor(1.0,1.0,1.0,1.0);
    }
     
    void VistaWindow::paintGL()
    {
     
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
        //gluOrtho2D(6,7,68,69);
        setCamera(point(0,0),100);
        glTranslatef(0.0, 0.0, 2.5); //Positionne le prochain objet déclaré dans la matrice.
        glColor3f(0.0, 0.5, 1.0);
        drawFromFile("../Phase6/IM/motifs_lambert93.txt"); //N'est pas dessiné pour une raison que j'ignore
     
        vector<point> poly1;
        poly1.push_back(point(-50,50));
        poly1.push_back(point(50,50));
        poly1.push_back(point(50,-50));
        poly1.push_back(point(-50,-50));
        drawEmptyPolygon(poly1);
     
        vector<point> poly2;
        poly2.push_back(point(-25,25));
        poly2.push_back(point(25,25));
        poly2.push_back(point(25,-25));
        poly2.push_back(point(-25,-25));
        drawEmptyPolygon(poly2);
     
        vector<point> poly3;
        poly3.push_back(point(-75,75));
        poly3.push_back(point(75,75));
        poly3.push_back(point(75,-75));
        poly3.push_back(point(-75,-75));
        drawEmptyPolygon(poly3);
     
     
        glFlush();
    }
    poly1, poly2 et poly3 se dessinent sans problème. C'est vraiment ce qu'il y a dans la fonction drawFromFile() qui ne passe pas du tout, sans que je capte pourquoi. Pourtant toutes les autres fonctions que j'ai faites passent sans problèmes.

    Je vous met également le projet complet a disposition si vous voulez regarder tout le code : http://www44.zippyshare.com/v/CA58ZhIj/file.html

    Merci d'avance pour votre aide.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Bon, j'ai trouvé le problème. Mon repère était pas assez grand. Sujet résolu.

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

Discussions similaires

  1. Appliquer des textures dans un widget OpenGL
    Par dourouc05 dans le forum Téléchargez
    Réponses: 0
    Dernier message: 09/11/2010, 20h55
  2. Réponses: 0
    Dernier message: 28/05/2009, 17h41
  3. pas d'affichage dans la page web
    Par deny dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/06/2008, 10h26
  4. [W3C] Pas d'affichage dans IE (FF et Opera OK)
    Par Johnbob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 15/10/2007, 11h09
  5. [Conception] pas d'affichage dans un tableau
    Par klue_ dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 15/05/2007, 09h12

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