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 2.1 index d'attribut


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Dev
    Inscrit en
    Mai 2009
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Mai 2009
    Messages : 257
    Par défaut Opengl 2.1 index d'attribut
    Bonsoir, je me retrouve confronté à un problème d'index de location d'attribut (de vertex)

    Je suis encore sous OpenGL 2.1 mais je prévoir de migrer progressivement vers OpenGL 3.0 et je m'habitue donc aux nouvelles conventions

    là j'ai décidé de retirer toute référence "en dur" aux attributs de vertex position, normal, etc...

    je teste sur un cube avec juste les positions de vertex
    je donne à l'attribut de position l'index 10;

    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
     
    #define BUFFER_OFFSET(a) ((char*)NULL + (a))
     
    GLuint positionsAttrib = 10;
    glBindAttribLocation (program, positionsAttrib, "pos");
     
    glLinkProgram(program);
     
    glEnableVertexAttribArray(positionsAttrib);
     
    glBindBuffer(GL_ARRAY_BUFFER, VBObuffersId[0]);
     
    glVertexAttribPointer(positionsAttrib,3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0);
     
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, VBObuffersId[1]);
     
    glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, 0);
     
    glDisableVertexAttribArray(positionsAttrib);
     
    glBindBuffer(GL_ARRAY_BUFFER,0);

    code du shader :

    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
     
    VERT
     
    uniform mat4 ModelViewMatrix;
    uniform mat4 ProjectionMatrix;
     
    attribute vec3 pos;
     
    void main()
    {	
    	gl_Position = ProjectionMatrix*ModelViewMatrix*vec4(pos, 1.0f);
     
    }
     
    FRAG
     
    void main()
    {
        gl_FragColor = vec4(0.4,0.4,0.8,1.0);
     
    }

    alors c'est bien simple lorsque je teste avec l'index 10 pas d'erreur mais rien ne s'affiche

    mais lorsque je remplace cet index par 0(donc l'index "harcodé" de l'attribut de position) aucun problème


    j'y avais deja eu droit quand j'avais voulu ajouter des attributs de tangentes et binormales (index 8 et 9) mais le problème venait que j'avais oublier de linker de nouveau le program après le glBindAttribLocation et j'utilisais encore glVertexPointer, glNormalPointer, etc

    merci

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 145
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Lorsque je l'ai le message ... je me suis dit: "Tient je ne savais pas que l'on pouvait choisir une valeur ( au début la votre me semblait aléatoire ) pour le "bind" d'attributs"
    Je ne vois pas pourquoi vous ne voulez pas utiliser 0, premièrement.
    Deuxièmement le nombre d'attributs est surement limité ... et si votre machine ne gère pas plus de 8 attributs ... bah mettre 10 n'a pas de sens ( d'après moi )

    Pour être sur de connaitre la source du problème, veuillez récupéré et analysé l'erreur avec glGetError().
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Création d'index sur attribut booléen
    Par alex2746 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/05/2010, 14h08
  2. boutons radio dans une table, attribut "index" de t:radio
    Par NomUtilisateurDejaPris dans le forum JSF
    Réponses: 4
    Dernier message: 22/05/2008, 13h36
  3. index et ordre des attributs dans clause where
    Par monoludo dans le forum SQL
    Réponses: 2
    Dernier message: 04/10/2007, 21h34
  4. Modifier l'attribut d'indexation d'un champ
    Par Frenchguy dans le forum VBA Access
    Réponses: 15
    Dernier message: 06/09/2007, 12h39

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