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 :

glVertexPointer, Offset, Stride, décalage lors de la lecture des vertices


Sujet :

OpenGL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 28
    Points : 26
    Points
    26
    Par défaut glVertexPointer, Offset, Stride, décalage lors de la lecture des vertices
    Bonsoir,

    J'ai un problème lorsque que je souhaite dessiner un objet à partir d'un buffer ( ce n'est pas un VBO ), ce buffer contient la couleur du vertex (3, GL_FLOAT) suivit de la position du vertex (3, GL_FLOAT).

    un petit exemple simple :
    Vector3F V[8];

    V[0] = Vector3F(1.0f,0.0f,0.0f); // couleur vertex 0
    V[1] = Vector3F(16.0f,16.0f,16.0f); // position vertex 0
    V[2] = Vector3F(0.0f,1.0f,0.0f); // etc...
    V[3] = Vector3F(16.0f,17.0f,16.0f);
    V[4] = Vector3F(0.0f,0.0f,1.0f);
    V[5] = Vector3F(16.0f,16.0f,17.0f);
    V[6] = Vector3F(1.0f,0.0f,0.0f);
    V[7] = Vector3F(17.0f,16.0f,16.0f);

    en utilisant :
    glInterleavedArrays(GL_C3F_V3F, 0, &V[0]);
    glDrawArrays(GL_LINE_STRIP, 0, 4);

    L'objet s'affiche correctement, avec les bonnes couleurs, mais en utilisant :

    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, sizeof(Vector3F), (GLubyte *) (&V[0]) + sizeof(Vector3F));

    glEnableClientState(GL_COLOR_ARRAY);
    glColorPointer(3, GL_FLOAT, sizeof(Vector3F), (GLubyte *) (&V[0]) );

    glDrawArrays(GL_LINE_STRIP, 0, 4);

    J'obtient un objet ou certains vertices utilisent les coordonnées des couleurs et vice-versa. Il y a clairement un problème d'offset et de stride mais même en essayant plusieurs valeurs je n'arrive pas a obtenir mon objet.

    ps : sizeof(Vector3F) = 12 octets

    Après vérification il semble que la valeur mise dans le paramètre Stride n'est pas prise en compte ...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 28
    Points : 26
    Points
    26
    Par défaut
    Correction :

    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, sizeof(Vector3F) * 2, (GLubyte *)(&V[0]) + sizeof(Vector3F));

    glEnableClientState(GL_COLOR_ARRAY);
    glColorPointer(3, GL_FLOAT, sizeof(Vector3F) * 2, (&V[0]) );

    glDrawArrays(GL_LINE_STRIP, 0, 4);

    Stride doit contenir la taille d'un packet (position + couleur) et pas la taille du décalage créer par les autres composants contenus dans le tableau.

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

Discussions similaires

  1. [DDE]Décalage lors de la lecture d'un colonne vide
    Par MEGAMIND2 dans le forum SAS Base
    Réponses: 11
    Dernier message: 11/03/2011, 16h50
  2. Problème lors de la lecture d'un fichier avec Input...
    Par Kronoob dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 18/11/2005, 19h55
  3. Probleme de BIP lors de la lecture d'un fichier
    Par GroRelou dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/09/2005, 11h12
  4. [socket] Bloqué lors de la lecture
    Par oiffrig dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 01/04/2005, 11h04
  5. Réponses: 14
    Dernier message: 30/03/2005, 22h50

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