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 au shader (GLSL)


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut Envoyer une matrice au shader (GLSL)
    Bonjour,

    Dans mon ancien code source, j'avais ceci et les objects de ma scène s'affichaient très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glMatrixMode(GL_PROJECTION);
    glLoadMatrixf((float*)projectionMatrix);
    et le vertex shader:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
    J'aimerais envoyer cette matrice au shader, j'ai donc fait ceci à l'init de mon programe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    projectionMatrixLoc = glGetUniformLocation(shad->getProgram(), "projectionMatrix");
    et ceci dans la boucle d'affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glUniform4fv(projectionMatrixLoc, 4, (float*)projectionMatrix);
    et dans mon vertex shader:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uniform mat4 projectionMatrix;
    ....
    gl_Position = projectionMatrix * gl_ModelViewMatrix * gl_Vertex;
    Mais quand je fait ça, je n'ai plus aucun objects d'affichés dans ma scène ! Pourquoi ?

    Merci d'avance

  2. #2
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    Je n'ai pas tout regardé mais il existe pour envoyer une matrice ceci : glUniformMatrix4fv

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Merci, ça fonctionne

    Je ne comprend pas la différence entre ses deux lignes de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glUniform4fv(projectionMatrixLoc, 4, (float*)projectionMatrix);
    glUniformMatrix4fv(projectionMatrixLoc, 1, false, (float*)projectionMatrix);
    Pourquoi la première ne fonctionne pas ?

  4. #4
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    Citation Envoyé par zenux Voir le message
    Merci, ça fonctionne

    Je ne comprend pas la différence entre ses deux lignes de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glUniform4fv(projectionMatrixLoc, 4, (float*)projectionMatrix);
    glUniformMatrix4fv(projectionMatrixLoc, 1, false, (float*)projectionMatrix);
    Pourquoi la première ne fonctionne pas ?
    Et bien glUniform4fv c'est plutôt si tu déclare une vec4 dans ton shader et glUniformMatrix4fv c'est plutôt si tu déclare une mat4 dans ton shader, comme tu as déclaré une mat4 tu utilise glUniformMatrix4fv.

    EDIT : Si tu comprends l'anglais la partie DESCRIPTION est intéressante : http://www.opengl.org/sdk/docs/man/xhtml/glUniform.xml

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/09/2011, 20h19
  2. Réponses: 0
    Dernier message: 24/02/2009, 04h36
  3. Envoyer une matrice à un vertex program
    Par Laurent Gomila dans le forum OpenGL
    Réponses: 7
    Dernier message: 26/09/2005, 17h30
  4. Comment envoyer une commande à une console ?
    Par seb_asm dans le forum Assembleur
    Réponses: 3
    Dernier message: 27/03/2004, 14h09
  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