2012-07-09 4 views
1

J'ai un FBO auquel j'ajoute deux textures. Ensuite, je veux lier le FBO, utiliser la première texture comme entrée (bind) à un shader et écrire à la deuxième texture, les deux sont attachés au FBO. J'ai essayé cela en utilisant glDrawBuffer pour spécifier GL_COLOR_ATTACHMENT1 comme tampon de dessin, mais sans succès. Est-ce possible de toute façon?OpenGL FBO Textures multiples

Modifier:

Voici comment j'essaie de le faire:

GLuint tex0, tex1; // they are created elsewhere and bound to the fbo 
glBindFramebuffer(GL_FRAMEBUFFER, fbo); 

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, tex0); 

glDrawBuffer(GL_COLOR_ATTACHMENT1); 

// render code 

glReadBuffer(GL_COLOR_ATTACHMENT1); 
glReadPixels(...); 

Mais le résultat de glReadPixels est différent de ce que je pensais. Pouvez-vous voir des problèmes ici?

+0

Pouvons-nous voir du code? –

Répondre

0

La texture que vous échantillonnez dans le shader ne doit pas être liée au FBO. Il suffit de lier en utilisant glBindTexture comme une texture normale.

Je crois que vous obtenez un comportement indéfini si vous avez une texture liée simultanément à un échantillonneur et à un FBO.

+0

-1: Incorrect. Il est parfaitement légal d'avoir une texture attachée au FBO et échantillonnée à partir d'un shader. Il ne devient indéfini que lorsque vous écrivez * sur une image à partir de laquelle vous échantillonnez. –

+0

Salut, Donc, à la fin, est-ce légal la situation ci-dessus? – Alin