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:
Ensuite qu'est ce qu'il faut faire pour lier ma variable "color" pour qu'elle écrive dans ma texture du 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);
* 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.
Partager