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 :

Envoyer une matrice à un vertex program


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut Envoyer une matrice à un vertex program
    Salut

    J'ai quelques difficultés à envoyer ma matrice de ModelViewProj à un vertex program. J'utilise pour cela la fonction glProgramLocalParameter4fvARB, mais j'ai eu du mal à trouver de la documentation et donc je ne suis pas sûr de moi.

    Je ne suis pas sûr non plus de la forme avec laquelle envoyer la matrice : transposée ou pas transposée ?

    Pour info, tout fonctionne bien lorsque dans mon programme j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PARAM c0[4] = {state.matrix.mvp};
    Mais pas ceci (rien n'est affiché à l'écran):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PARAM c0[4] = {local.param[0..3]};
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, 0, Ligne[0]);
    glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, 1, Ligne[1]);
    glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, 2, Ligne[2]);
    glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, 3, Ligne[3]);
    Donc je suis plus ou moins sûr que l'erreur vient bien d'un mauvais envoi de la matrice.

    Ma config : GeForce3 Ti 200 avec drivers 52.16


    Quelqu'un peut m'éclairer sur le sujet ?


  2. #2
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 577
    Par défaut
    ce n'est pas du GLSL ?
    est-ce que tu utilise un "vertex program" ou un "vertex shader" ?
    il semble qu'il y ait une différence entre les deux étant donné qu'ils ont chacun leur extension

    edit- tu fais appel à un "vertex program" j'ai pas bien lu tes blocs de code
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Non ce n'est pas du GLSL, c'est bien un vertex program. Aurais-je mélangé les deux ? Ce serait possible vu que les deux cohabitent dans mon appli, mais a priori ce n'est pas le cas puisque si je n'envoie pas moi-même la matrice de MVP tout fonctionne parfaitement.

  4. #4
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 577
    Par défaut
    J'ai lu ceci dans la doc de l'extension GL_ARB_vertex_program :

    Operations not subsumed by vertex programs
    - Clipping to the view frustum.
    - Perspective divide (division by w).
    - The viewport transformation.
    - The depth range transformation.
    - Front and back color selection (for two-sided lighting and
    coloring).
    - Clamping the primary and secondary colors to [0,1].
    - Primitive assembly and subsequent operations.
    - Evaluators (except the AUTO_NORMAL normalization).
    dans la liste des choses que l'extension ne fait pas il y a "The viewport transformation"
    est-ce qu'il y aurai un rapport avec ton problème ?

    sinon pourquoi ne pas :
    - sauvegarder la matrice de modelview (glPushMatrix)
    - loader la matrice que tu veux envoyer (glLoadMatrix)
    - une fois le vertex program terminé tu restaure ta matrice (glPopMatrix)

    si je suis à côté de la plaque, tu peux me dire en gros ce que tu cherches à faire ?
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    dans la liste des choses que l'extension ne fait pas il y a "The viewport transformation"
    est-ce qu'il y aurai un rapport avec ton problème ?
    A priori non, il s'agit des choses qu'on ne peut pas faire avec un vertex shader / program, quelque soit le langage ou l'API. Et puis je me répète, mais en utilisant la matrice MVP fournie par OpenGL (state.matrix.mvp dans le vertex program) tout fonctionne bien.

    sinon pourquoi ne pas :
    - sauvegarder la matrice de modelview (glPushMatrix)
    - loader la matrice que tu veux envoyer (glLoadMatrix)
    - une fois le vertex program terminé tu restaure ta matrice (glPopMatrix)

    si je suis à côté de la plaque, tu peux me dire en gros ce que tu cherches à faire ?
    En fait pour les shaders Cg (qui sont compilés en ASM et utilisés via des vertex program ARB) je ne peux pas utiliser state.matrix.mvp, donc il faut que je puisse l'envoyer moi-même. De toute façon je crois bien qu'il ne s'agit pas que de cette matrice, apparemment je n'arrive à envoyer aucun paramètre à mon vertex program.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Bon en fait j'avais simplement oublié de binder (glBindProgramARB) mon vertex program avant de lui envoyer les paramètres.

    C'était complétement idiot

  7. #7
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 577
    Par défaut
    Arf
    pas facile de trouver ce genre de merde dans le code en plus
    Bravo pour avoir trouvé

    Et en passant, bravo pour tes tutoriels, le moteur 3D semble avancer à grands pas ;-)
    bientôt un bouquin ? quand le moteur sera terminé ?
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et en passant, bravo pour tes tutoriels, le moteur 3D semble avancer à grands pas
    Merci c'est sympa

    bientôt un bouquin ? quand le moteur sera terminé ?
    Peut-être un jour, pourquoi pas

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

Discussions similaires

  1. Envoyer une matrice au shader (GLSL)
    Par zenux dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/02/2010, 10h50
  2. [FLASH MX] Envoyer une image par e-mail
    Par skyjoe dans le forum Flash
    Réponses: 2
    Dernier message: 22/10/2004, 18h11
  3. Comment envoyer une commande à une console ?
    Par seb_asm dans le forum Assembleur
    Réponses: 3
    Dernier message: 27/03/2004, 14h09
  4. Fragment & vertex program
    Par charly dans le forum OpenGL
    Réponses: 5
    Dernier message: 19/03/2004, 19h47
  5. Déclarer une matrice
    Par joy dans le forum C
    Réponses: 7
    Dernier message: 09/12/2002, 00h42

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