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:
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.