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 :

Qt et OpenGL : dessiner un ensemble de pixels


Sujet :

OpenGL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut Qt et OpenGL : dessiner un ensemble de pixels
    Bonjour, je débute avec OpenGL (et Qt), j'essaie de dessiner un rectangle pixel par pixel (le but final n'est pas de dessiner un rectangle, sinon oui il y a plus simple).

    Premièrement, je calcul la taille vertical et horizontal d'un pixel dans le constructeur de ce que je veux dessiner :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DessinOpenGL::DessinOpenGL() : QGLWidget()
    {
    	m_hPixel = 1.0 / geometry().height(),
    	m_lPixel = 1.0 / geometry().width();
    }
    Et je redéfinie paintGL comme ceci :

    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
    void DessinOpenGL::paintGL()
    {
        glClear(GL_COLOR_BUFFER_BIT);
     
        glBegin(GL_POINTS);
     
            for (int j = 0; j < 800 ; j++)       // censé dessiner un rectangle rouge de 800 * 600
            {
            	for(int i = 0; i < 600; i++)
            	{
            		glColor3ub(255,0,0);
            		glVertex2d(i * m_lPixel, j * m_hPixel);
            	}
            }
     
        glEnd();
     
        glFlush();
    }

    J'ai un main tout simple qui définie un objet dessinOpenGL, lui donne des dimension et l'affiche dans une fenêtre de 800*600.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int main(int argc, char **argv)
    {
        QApplication app(argc, argv);
     
        DessinOpenGL dessin;
     
        dessin.resize(800, 600);
        dessin.show();
     
        return app.exec();
    }

    Ça à l'air de marcher avec des petites valeurs (carré de 100*100 par exemple), mais passé certaines valeurs, le dessin ne change pas. Je devrais avoir un rectangle rouge de 800*600 (donc qui prendrait toute la fenêtre), mais je n'obtient qu'un petit rectangle dans ma fenêtre.

    Si vous pouvez m'éclairer ce serait super, merci.

  2. #2
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    Ca dépend de la position de ta caméra peut être.
    Un gros rectangle si tu es loin de lui ça change rien il est petit.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut
    J'ai essayé de placer la caméra :

    gluLookAt(0,0,1, 0,0,0, 0,1,0);

    C'est la première fois que je l'utilise, en faisant varié le 3ème paramètre (si j'ai bien compris il correspond à l'axe z, il devrait m'approcher où m'éloigner de mon rectangle), la taille du rectangle ne change pas (on ne voit qu'un point lorsqu'il est à 0), sa position change en fonction du signe du nombre, quand le nombre est supérieur à 1 (en valeur absolue), je ne vois plus rien.

    Pour m'assurer de bien placer mes points, j'ai préciser à glVertex les coordonnées sur l'axe z (0) :
    glVertex3d(i * m_lPixel, j * m_hPixel, 0);

    Je découvre ces outils, je m'y prend peut être comme un pied, mais je suis un peu perdu.

  4. #4
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    je sais pas trop essaie un truc genre en paramètre
    (0.0f, 0.0f, -5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f ) en paramètre de glulookat.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut
    Je ne vois plus rien avec ça.
    En mettant le "z" à 1.0f ça refait comme avant.

    Merci quand même.

Discussions similaires

  1. [Débutant] Récupérer les coordonnées d'un ensemble de pixels dans une matrice
    Par reda24 dans le forum Images
    Réponses: 5
    Dernier message: 01/06/2007, 18h06
  2. dessin d'ensembles flous dans un graphe
    Par sofiane_bentayeb dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/11/2006, 08h49
  3. [Opengl] dessiner lorsque qu on clique
    Par harris_macken dans le forum OpenGL
    Réponses: 4
    Dernier message: 09/07/2006, 02h16
  4. Créer un DC temporaire, dessiner dedans et récuperer pixels
    Par nico-pyright(c) dans le forum Windows
    Réponses: 3
    Dernier message: 21/12/2005, 15h26
  5. [GDI,GDI+,OpenGL] Dessiner des cerles et des arcs
    Par romeo9423 dans le forum MFC
    Réponses: 1
    Dernier message: 17/05/2005, 09h44

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