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 :

Afficher plusieurs .obj different


Sujet :

OpenGL

  1. #1
    Membre régulier Avatar de ia.jenny
    Profil pro
    Inscrit en
    Août 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 152
    Points : 78
    Points
    78
    Par défaut Afficher plusieurs .obj different
    Bonjour,
    j’arrive à afficher box.obj ou Sphere.obj avec les composantes X, Y et Z
    mon problème : je n'arrive pas à afficher box.obj et Sphere.obj en même temps

    extern CObject G_Object[200];
    ....
    G_Object[0].Position(-200,0,0);
    G_Object[0].Draw();

    G_Object[1].Position(200,0,0);
    G_Object[1].Draw();

    certainement un problème avec G_Object[], je ne comprend pas, ça devrais fonctionner.
    A l'affichage, j'ai 2 Sphere, au lieux d'un box et d'une Sphere
    merci d'avance de m'avoir accordé de votre temps pour résoudre mon problème.


    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
    Ma class CObject :
     
    #pragma once
    #include "Object.h"
     
    CObject G_Object[200];
     
    float V[10000][5];  int nV;
    float Vt[1000][5]; int nVt;
    float Vn[10000][5]; int nVn;
    float F[10000][5];  int nF;
     
     
    void CObject::Init()
    {
    G_Object[0].Load("box.obj");
    G_Object[1].Load("Sphere.obj");
    }
    void CObject::Load(char *FileObj)
    {
    Destroy();
    ....
     if(strcmp(lineHeader,"v")==0) {fscanf(objfile,"%f %f %f\n",&V[nV][0],&V[nV][1],&V[nV][2]); nV++;}
    else if(strcmp(lineHeader,"vt")==0){fscanf(objfile,"%f %f %f\n",&Vt[nVt][0],&Vt[nVt][1],&Vt[nVt][2]); nVt++;}
    else if(strcmp(lineHeader,"vn")==0){fscanf(objfile,"%f %f %f\n",&Vn[nVn][0],&Vn[nVn][1],&Vn[nVn][2]); nVn++;}
    else if(strcmp(lineHeader,"f")==0) {fscanf(objfile,"%f/%f/%d %f/%f/%f %f/%f/%f\t",&F[nF+1][0],&F[nF+1][1],&F[nF+1][2],&F[nF+2][0],&F[nF+2][1],&F[nF+2][2],&F[nF+3][0],&F[nF+3][1],&F[nF+3][2]);nF+=3;}
    ...
    }
    void CObject::Position(float X0, float Y0, float Z0)
    {
    ObjectPositon.X=X0;
    ObjectPositon.Y=Y0;
    ObjectPositon.Z=Z0;
    }
    void CObject::Draw()
    {	
    ....
    glPushMatrix();
    glTranslatef(ObjectPositon.X,ObjectPositon.Y,ObjectPositon.Z);
    glEnable(GL_BLEND);
    glBegin(GL_TRIANGLES);
    ...
    glEnd();
    glDisable(GL_BLEND);
    glPopMatrix();
     
    }
    void CObject::Destroy()
    {
    delete [] V;
    delete [] Vn;
    delete [] Vt;
     
    nV=0;
    nVt=0;
    nVn=0;
    nF=0;
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Y'a déjà à redire sur ce court code:
    - utilisation de variable globale sûrement dispensable
    - tableau globale de classe dont la fonction Init initialise... des éléments du tableau globale
    > à la limite si Init est static, mais là on retombe sur le point 1 : le tableau globale est au mieux malvenu
    - V, Vt, Vn sont des tableaux static et tu les delete[] ?
    - std::vector, std::array ? std::string ? non ?
    - Draw n'est pas const ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre régulier Avatar de ia.jenny
    Profil pro
    Inscrit en
    Août 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 152
    Points : 78
    Points
    78
    Par défaut
    Merci pour ton aide. ça fonctionne
    - tableau globale de classe dont la fonction Init initialise... des éléments du tableau globale
    - V, Vt, Vn sont des tableaux static et tu les delete[] ?
    oui, je delete, pour int le prochain Load

    Je sais bien que mon programme n'est pas très catholique.
    Mais, c'est mon propre Programme et non pris sur internet.
    Merci encore


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class CObject
    {
    	float V[10000][5]; int nV;
    	float Vt[10000][5]; int nVt;
    	float Vn[10000][5]; int nVn;
    	float F[10000][5]; int nF;
     
    	public:
    		void Init();
    ...
    }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Je ne sais pas en quoi j'ai pu t'aider mais "tu es le bienvenu"
    Citation Envoyé par ia.jenny Voir le message
    oui, je delete, pour int le prochain Load
    Sauf qu'on ne delete jamais un truc non alloué dynamiquement. Et un tableau static et bien c'est... non dynamique, et donc ne doit absolument pas être delete
    Sinon mieux : utilise std::vector
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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

Discussions similaires

  1. [Débutant] Comment afficher plusieurs images dans des axes differents
    Par DOUBLE_H dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 07/06/2011, 23h22
  2. [FLASH 8] Afficher plusieurs images
    Par robocop2776 dans le forum Flash
    Réponses: 2
    Dernier message: 02/02/2006, 09h10
  3. [C#] Un composant pour afficher plusieurs lignes ?
    Par Tips dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/12/2005, 19h47
  4. plusieurs submits differents dans un formulaire...
    Par nicdes dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/12/2005, 14h46
  5. afficher plusieurs numeros pour un nom
    Par allowen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 13h19

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