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 :

Choix pour l'élaboration d'un petit moteur pour affichage 3D


Sujet :

OpenGL

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut Choix pour l'élaboration d'un petit moteur pour affichage 3D
    Voila je veut faire un petit moteur 3D qui affiche des objets tout con (mon but pour l'instant est de faire un objet simple texturé qui se déplace sur X/Z avec une caméra qui est centrée en permanence sur l'objet et qui peut tourner autour de lui )
    j'ai trouvé plein de tutos sur le sujet
    mais n'ayant pas envie de faire un simple copié/collé qui ne m'apprendra rien, j'essaye de tout refaire

    sachant que plus tard je le ferai évoluer ce petit moteur 3D vers quelque chose de plus complet j'hésite entre 2 solutions

    la première :
    mettre dans le programme principale
    - Une liste de vertex
    - Une liste de surface qui utilise la lise de vertex
    - Une liste de mesh qui utilise la liste de surfaces
    - Une liste d'objet qui utilise la liste de mesch
    en pointant sur l'objet de la liste désirée avec un index.

    La deuxieme
    - inclure chaque sous enseble dans l'ensemble plus grand, je m'explique
    Un objet contient un mesh qui contient des surfaces qui contiennent des vetexs ...

    donc en gros le programme principale ne contiendrai qu'une liste d'objet


    il me semble que la première solution serait p-e plus performante
    mais moins facile a programmer ( connaitre l'index des 3 vertex d'un triangle ...) enfin c ptet pas si dure j'y ai pas en,core réfléchis.


    voila
    j'ai besoins de votre avis

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    je pense que la difference de perf entre les 2 ne sera pas enorme mais par contre la difference de réutilisabilité est enorme... perso je penche plus pour la deuxieme...
    enfin ce que je ferait c'est une class d'objet qui contient PLUSIEURS mesh, une classe de mesh qui contient 1 texture et une liste d'index regroupé par 3 (pour les triangles) et une liste de vertex.

    lors de l'affichage tu prend un objet, pour chaque mesh de l'objet tu fait un bind sur la texture de l'objet, puis tu utilise les vertex array avc le tableau d'index pour afficher le mesh...

    l'avantage de cette methode c'est que un même objet peut utiliser plusieurs textures et surtout ca permet l'utilisation des vertex array qui boost considerablement le rendu...
    * 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

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    tient au passage
    j'ai une petiute question con

    quelle différence entre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    struct MaStructure
    {
      int x,y,z;
     
      int getx();
      int gety();
      int getz();
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class MaStructure
    {
      int x,y,z;
     
      int getx();
      int gety();
      int getz();
    }
    mise a part le fait que les classes permettent l'héritage
    est-ce la première du C et la deuxieme du C++ ??

    car sur différents tutos soit il y avait des classes, soit des structures...

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    en fait il y a quelques difference en interne je croit mais demande plutot sur le forum c++ car moi je m'y connait pas trop... perso je prefere utiliser des classes mais c'est plus une histoire de gout.

    en fait je croit que les structure sont plus a utiliser quand c'est juste du stockage alors que les classe sont plus a utiliser si tu veut utiliser des methode en + (j'avait vu quelque part qu'en fait les structures avec des methodes etait compilé comme des classe mais c'est a verifier...)

    enfin bref demande ca sur le forum c++ car la je suis vraiment pas sur de moi...
    * 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

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    ok d'ac
    merci

  6. #6
    Membre averti Avatar de charly
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 329
    Points : 358
    Points
    358
    Par défaut
    la difference fondamentale entre les classe et les structure reside dans la capacité a utilisé des procedure et des fonctions interne dans les classes , ainsi qu'une hierarchie qui les réutilisera
    6*8 =42

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par bafman
    une classe de mesh qui contient 1 texture et une liste d'index regroupé par 3 (pour les triangles) et une liste de vertex.
    j'ai pas très bien compris cette partie en fait
    ce que tu appelle liste d'index regroupé par 3

  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 : 40
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    en fait avec les vertex array tu donne un tableau de vertex a openGL, et tu lui file un tableau d'index qui correspondes au vertex du triangle...

    en gros le principe c'est ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vertex{{0,0,0},{0,1,0},{0,0,1},[...]}
    index{0,1,2,12,31,16,[...]}
    apres tu donne la reference du tableau vertex a openGL, et tu lui demande d'afficher les vertex correspondant au valeur d'index.
    par exemple pour afficher le 1ér triangle tu lui demandera d'afficher les 3 premier index, et lui il ira lire dans le tableau de vertex pour chercher les valeurs des x,y,z...

    pour de plus ample (et meilleurs ) info fait une recherche sur les vertex array
    * 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

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    personnellement j'utilise ce systeme de données :
    pour chaque objet :

    -un nombre de points et un tableau de point (vertex)
    -un nombre de face et un tableau 4 entier correspondant aux 3 indices du triangle et a l'id de la texture de ce triangle
    -un tableau de normales (rangés dans l'ordre des faces, c a d 1er 2eme puis 3eme point de chaque face)
    -un tableau de coordonnées de textures
    -un tableau d'indice de coordonnées de textures

    (j'importe ces données a partir d'un *.ase exporté depuis 3DS max)

  10. #10
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    Je trouve que qd on dis que les classes font en plus que de l'héritage c pas très cool... Car l'héritage c qd meme qq chose de fabuleux !

    petite rectification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class MaStructure 
    { 
      int x,y,z; 
     
    public:
      int getx(); 
      int gety(); 
      int getz(); 
    }
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    ouhai ca fais plein d'autre truc
    mais bon ct pour illustrer vite fait mon exemple :-)

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    encore une ptite question
    il vaut mieux travailler avec des Float , Double, Long ou Integer pour les coordonnées d'un point ?

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    je dirais des doubles. c'est plus precis

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    ca depend ce que tu veut :
    les float sont les plus rapide
    les doubles sont plus precis

    souvent les float suffisent
    * 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

  15. #15
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    je suis pas sur que ca aille plus vite avec les float, vu que maintenant la plpart des unité de calcule fonctionnent en double. Par contre tu gagne de la memoire avec les float.

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    tu gagne aussi a l'envoi... par definition le double fait 2* la taille du float
    * 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

  17. #17
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    donc pour résumer
    si je veux de la précision --> double
    si je veux de la vitesse d'exécution --> float

    :-)

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    voila

    @ +
    * 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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/03/2008, 10h46
  2. Réponses: 7
    Dernier message: 16/02/2008, 14h10
  3. Choix petit SGBD pour néophyte
    Par dark nono dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 19/10/2007, 21h01
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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