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 3: écrire dans une texture de FBO


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 OpenGL 3: écrire dans une texture de FBO
    Bonjour,

    J'aimerais écrire dans une texture FBO à partir d'un shader:
    1) J'ai créé mon vertex shader et mon fragment shader où je définis une variable out : "out vec4 color;"
    2) Je bind mon fragData color: glBindFragDataLocation(myShader, 1, "color");
    3) Je crée mon FBO:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    glGenFramebuffers(1, &bufferID[MY_FBO]);
    glGenTextures(1, &bufferID[COLOR_BUFFER]);
    glBindFramebuffer(GL_FRAMEBUFFER, bufferID[MY_FBO]);
    glBindTexture(GL_TEXTURE_2D, bufferID[COLOR_BUFFER]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, bufferID[COLOR_BUFFER], 0);
    Ensuite qu'est ce qu'il faut faire pour lier ma variable "color" pour qu'elle écrive dans ma texture du FBO ?

    * Sur Internet, j'ai vu qu'il fallait remplacer 'GL_COLOR_ATTACHMENT0' par le colorNumber de mon fragData "color", c-à-d: 1. Ca ne fonctionne pas car la fonction glFramebufferTexture2D n'accepte que les valeurs GL_COLOR_ATTACHMENTx -> GL_INVALID_ENUM.
    * J'ai aussi vu que certain utilisait GL_COLOR_ATTACHMENT0 comme colorNumber de la fonction glBindFragDataLocation. Ca ne fonctionne pas, j'obtiens un GL_INVALID_VALUE.

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut
    Bonjour,

    Essayez d'utiliser glBindFragDataLocation, ainsi vous n'avez pas à deviner si la texture as le #0 ou #1.

  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
    Je suis passé à OpenGL 3.3 & GLSL 330 avec les 'layout / location' de GLSL, ça fonctionne

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

Discussions similaires

  1. Tutoriel OpenGL Moderne - rendu dans une texture
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 15/06/2014, 13h20
  2. Réponses: 1
    Dernier message: 18/04/2006, 23h16
  3. Réponses: 3
    Dernier message: 01/02/2006, 21h31
  4. Données transmises dans une Texture dynamique
    Par Mastero dans le forum DirectX
    Réponses: 11
    Dernier message: 27/05/2005, 11h40

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