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 :

[OpenGl]Creation Vertex Map


Sujet :

OpenGL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut [OpenGl]Creation Vertex Map
    Bonjour,

    Pour un projet de fin d'annee, nous devons developper un jeu en reseau.

    Je m'occupe de la partie graphique et j'aimerai integrer une vrai map (pas des simples quads avec texture pour faire la map), jaimerai plus une map avec du relief.

    Sachant que la taille de la map est en rentre en en parametre du jeu, il faudrait la generer en fonction.

    Imaginez une map de 10 x 10, il faudrait generer un tableau de vertex creant une map de la taille de 100 * taille d'une case, puis aleatoirement generer des vertex pour creer le relief (bosse ou creux). Je ferais ensuite un tableau de correspondance avec les cases du jeu et la map.

    J'espere etre assez clair.

    Je suis tres avance en C++ et j'ai des bases solide d'openGL.

    Seulement pour la generation du tableau de vertex, cela devient complique.

    Si vous avez des solutions, ou meme un autre moyen de cree des maps dynamique (en fonction de la taille) merci de m'en faire part !

    Merci d'avance !

  2. #2
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Par défaut
    Je te conseil de regarder ce qui se fait du coté de la génération de terrain procedurale. Sinon pour le relief regarde également du coté des heightmap ou heightfield.
    http://en.wikipedia.org/wiki/Heightmap
    Le plus dur est de trouver la bonne fonction pour generer un belle image mais cela doit se trouver sur le net je pense.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Merci de ta reponse !

    J'ai reussi a afficher une heightmap avec des vertexArray, ca marche niquel.
    Seulement j'aimerai utiliser les DisplayList pour plus d'optimisation, mais malheuresement rien ne s'affiche...


    [EDIT] apparement les VBO seraient plus optimise que les displays list ? merci de m'eclairer sur ce point.

    Voila comment je procede.

    Je cree ma heightmap avec cette 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
     
    void            HeightMap::loadHeightMap(void)
    {
      unsigned int  x;
      unsigned int  z;
      unsigned int  k;
     
      x = 0;
      k = 0;
      this->_vertexArray = new float[static_cast<unsigned int>((this->_lenX * this->_lenY * this->getAccuracy()) * 6)];
      this->_glList = glGenLists(1);
      glNewList(this->_glList, GL_COMPILE);
      {
        glEnable(GL_CULL_FACE);
        glCullFace(GL_BACK);
     
        glBegin(GL_TRIANGLES);
     
        while (x < (this->_lenX - this->getAccuracy()))
            {
              z = 0;
              while (z < (this->_lenY - this->getAccuracy()))
                {
                  Vector3f vertex1(x, this->getPixel(x, z), z);
                  Vector3f vertex2(x + this->getAccuracy(), this->getPixel(x + this->getAccuracy(), z), z);
                  Vector3f vertex3(x + this->getAccuracy(), this->getPixel(x + this->getAccuracy(), z + this->getAccuracy()), z + this->getAccuracy());
                  Vector3f vertex4(x, this->getPixel(x, z + this->getAccuracy()), z + this->getAccuracy());
     
     
                  vertex3.sendWithText();
                  vertex2.sendWithText();
                  vertex1.sendWithText();
     
                  vertex4.sendWithText();
                  vertex3.sendWithText();
                  vertex1.sendWithText();
     
                  k += 18;
                  z += this->getAccuracy();
                }
              x += this->getAccuracy();
            }
        glEnd();
        glDisable(GL_CULL_FACE);
      }
      glEndList();
    }
    la methode sendWithText() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void            Vector3f::sendWithText(void)
    {
      glColor3f(0, 0, 0);
      glVertex3f(static_cast<GLfloat>(this->_x), static_cast<GLfloat>(this->_y), static_cast<GLfloat>(this->_z));
      std::cout << this->getX() << " " <<  this->getY() << " " << this->getZ() << std::endl;
    }
    et l'appelle de la display list ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void            HeightMap::drawHeightMap(void)
    {
      glCallList(this->_glList);
    }
    la fonction drawHeightMap est appele dans une autre classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void            Game::draw(void)
    {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glClearColor(0.0f, 1.0f, 1.0f, 1.0f);
      glClearDepth(1.0f);
     
      this->_test->drawHeightMap();
     
      this->window_.display();
    }
    Voila si vous aviez une idee de pourquoi rien ne s'affiche (mes calculs sont bon, avec les vertexArray cela fonctionne ...)

    Merci d'avance !

Discussions similaires

  1. Creation carte MAP des communes france
    Par sasseur dans le forum ODS et reporting
    Réponses: 7
    Dernier message: 18/02/2014, 19h24
  2. Réponses: 2
    Dernier message: 06/01/2013, 12h58
  3. Vertex mapping ? Mise à jour VBO ?
    Par Yno dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/01/2007, 10h01
  4. [VBO] vertex map VS vertex map indexée
    Par Kurisu dans le forum OpenGL
    Réponses: 7
    Dernier message: 13/12/2006, 23h07
  5. Tableau de vertex dans OpenGL
    Par Guizmo57 dans le forum OpenGL
    Réponses: 5
    Dernier message: 11/04/2004, 09h15

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