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 de triangles


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut Affichage de triangles
    Salut,

    j'ai un tableau tableau_de_triangles contenant, les sommets(3D) de triangles.
    Je voudrais savoir comment faire en OpenGL/Glut pour afficher tous ses triangles

    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Excuse moi, mais si tu ne sais pas afficher des triangles avec OpenGL c'est que tu n'as pas dû lire un seul tutoriel / cours / livre sur le sujet...
    Les forums c'est bien, mais rien ne t'aidera plus qu'un peu de recherche personnelle.

  3. #3
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 582
    Par défaut
    tu fais appel à glVertex avec les bons paramètres entre un glBegin et un glEnd, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    glBegin(GL_TRIANGLES);
    glVertex3f(sommet1, sommet2, sommet3); // triangle 1
    glVertex3f(sommet4, sommet5, sommet6);
    glVertex3f(sommet7, sommet8, sommet9); // fin du triangle 1
    glVertex3f(sommet10, sommet11, sommet12); // triangle 2
    glVertex3f(sommet13, sommet14, sommet15);
    glVertex3f(sommet16, sommet17, sommet18); // fin du triangle 2
    glEnd(); // fin de l'envoi des triangles
    ça c'est la méthode simple
    un peu moins simple, documentes toi sur les vertex array
    si ton tableau est bien construit, tu peux l'envoyer directement pour affichage
    s'il n'est pas bien construit, tu peux toujours le modifier

    ps: tu aurais dû poster dans le forum opengl, d'ailleurs tu devrais t'y rendre pour y trouver des liens vers des tutoriaux ou encore la FAQ
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut
    Citation Envoyé par shenron666
    tu fais appel à glVertex avec les bons paramètres entre un glBegin et un glEnd, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    glBegin(GL_TRIANGLES);
    glVertex3f(sommet1, sommet2, sommet3); // triangle 1
    glVertex3f(sommet4, sommet5, sommet6);
    glVertex3f(sommet7, sommet8, sommet9); // fin du triangle 1
    glVertex3f(sommet10, sommet11, sommet12); // triangle 2
    glVertex3f(sommet13, sommet14, sommet15);
    glVertex3f(sommet16, sommet17, sommet18); // fin du triangle 2
    glEnd(); // fin de l'envoi des triangles
    ça c'est la méthode simple
    un peu moins simple, documentes toi sur les vertex array
    si ton tableau est bien construit, tu peux l'envoyer directement pour affichage
    s'il n'est pas bien construit, tu peux toujours le modifier

    ps: tu aurais dû poster dans le forum opengl, d'ailleurs tu devrais t'y rendre pour y trouver des liens vers des tutoriaux ou encore la FAQ
    Admettons que mon tableau contienne 2 triangles :
    Je sais le nombre d'élément qu'il y a dans mon tableau
    tab = sommet1, sommet2, sommet3, sommet4, sommet5, sommet6
    sommet1, sommet2, sommet3 : premier triangle
    sommet4, sommet5, sommet6 : deuxieme triangle
    En utilisant une boucle, on peut faire ça met comment indiquer qu'une fois qu'on a 3 sommets, on en ajoute 3 autres, ...

  5. #5
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 582
    Par défaut
    j'ai dit une connerie (encore une )
    bon c'est lundi alors tapez pas trop fort
    glVertex demande pas 3 sommets mais 1 sommet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    glBegin(GL_TRIANGLES);
    glVertex3f(sommet1.x, sommet1.y, sommet1.z); // triangle 1
    glVertex3f(sommet2.x, sommet2.y, sommet2.z);
    glVertex3f(sommet3.x, sommet3.y, sommet3.z); // fin du triangle 1
    glVertex3f(sommet4.x, sommet4.y, sommet4.z); // triangle 2
    glVertex3f(sommet5.x, sommet5.y, sommet5.z);
    glVertex3f(sommet6.x, sommet6.y, sommet6.z); // fin du triangle 2
    glEnd(); // fin de l'envoi des triangles
    Citation Envoyé par Premium
    En utilisant une boucle, on peut faire ça met comment indiquer qu'une fois qu'on a 3 sommets, on en ajoute 3 autres, ...
    facile, un triangle c'est 3 sommets, et ça OpenGL le sait (pas con GL )
    donc tu fais une boucle de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    glBegin(GL_TRIANGLES); // on demande à dessiner des triangles
    // on balance tous les sommets contenus dans tab
    // tab doit contenir un nombre de sommets multiple de 3
    // un sommet doit contenir 3 float pour le x, le y et le z
    for(int nSommetNb=0; nSommetNb < nCountVertex; nSommetNb++)
       glVertex(tab[nSommetNb].x, tab[nSommetNb].y, tab[nSommetNb].z);
    glEnd();
    c'est la base OpenGL
    sinon comme le dit Laurent, tu devrais consulter des tutoriaux
    ça te ferai gagner du temps
    et surtout, en y allant étape par étape, tu pourrais utiliser des méthodes bien plus efficaces pour gagner en performances
    tout dépend aussi du nombre de triangles que tu as à dessiner
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut
    Citation Envoyé par shenron666
    j'ai dit une connerie (encore une )
    bon c'est lundi alors tapez pas trop fort
    glVertex demande pas 3 sommets mais 1 sommet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    glBegin(GL_TRIANGLES);
    glVertex3f(sommet1.x, sommet1.y, sommet1.z); // triangle 1
    glVertex3f(sommet2.x, sommet2.y, sommet2.z);
    glVertex3f(sommet3.x, sommet3.y, sommet3.z); // fin du triangle 1
    glVertex3f(sommet4.x, sommet4.y, sommet4.z); // triangle 2
    glVertex3f(sommet5.x, sommet5.y, sommet5.z);
    glVertex3f(sommet6.x, sommet6.y, sommet6.z); // fin du triangle 2
    glEnd(); // fin de l'envoi des triangles

    facile, un triangle c'est 3 sommets, et ça OpenGL le sait (pas con GL )
    donc tu fais une boucle de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    glBegin(GL_TRIANGLES); // on demande à dessiner des triangles
    // on balance tous les sommets contenus dans tab
    // tab doit contenir un nombre de sommets multiple de 3
    // un sommet doit contenir 3 float pour le x, le y et le z
    for(int nSommetNb=0; nSommetNb < nCountVertex; nSommetNb++)
       glVertex(tab[nSommetNb].x, tab[nSommetNb].y, tab[nSommetNb].z);
    glEnd();
    c'est la base OpenGL
    sinon comme le dit Laurent, tu devrais consulter des tutoriaux
    ça te ferai gagner du temps
    et surtout, en y allant étape par étape, tu pourrais utiliser des méthodes bien plus efficaces pour gagner en performances
    tout dépend aussi du nombre de triangles que tu as à dessiner
    Merci pour le bout de code.
    C'est des milliers de triangles qu'il faut que je dessine

  7. #7
    Membre chevronné
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Par défaut
    utilise les VBO.
    Et pour les tutos il y a une exelent site :http://nehe.gamedev.net/
    et http://jeux.developpez.com/faq/openg...ITES_tutoriels

  8. #8
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    bah heu... un triangle ayant toujours 3 sommets () OpenGL est suffisament malin pour deviner que tu commence un nouveau triangle après 3 envois de vertex
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

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

Discussions similaires

  1. Affichage du Triangle de Pascal
    Par jrosenzw dans le forum C++
    Réponses: 11
    Dernier message: 14/03/2009, 03h10
  2. [Dx9][c#]PB Affichage d'un triangle
    Par OpenGG dans le forum DirectX
    Réponses: 2
    Dernier message: 14/01/2007, 20h18
  3. [debutant] affichage triangles
    Par primuus dans le forum DirectX
    Réponses: 2
    Dernier message: 03/04/2006, 22h45
  4. Création vertex pour affichage en Triangle Strips
    Par ReiKiss dans le forum DirectX
    Réponses: 2
    Dernier message: 09/11/2005, 10h31
  5. Affichage plein de triangles
    Par Kevgeii dans le forum OpenGL
    Réponses: 1
    Dernier message: 23/06/2005, 19h12

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