2009-10-12 3 views
1

J'utilise un objet framebuffer avec une pièce jointe tampon de couleur pour effectuer des tests de hit par pixel. Je voudrais le rendre à l'écran pour le débogage et les tests mais maintenant tout ce que je reçois est un grand néant blanc. Je suppose que je dois envoyer une commande de rendu similaire à glSwapBuffers(), mais comme je n'utilise qu'un seul tampon, je ne sais pas à quoi cela correspondrait. Y at-il une commande équivalente pour utiliser un seul tampon?Comment puis-je tester si mon objet framebuffer est correctement rendu?

Voici ma configuration:

// Store the real framebuffer 
    glGetIntegerv(GL_FRAMEBUFFER_BINDING_OES, (GLint*) &regularFbo); 
    // Generate an offscreen framebuffer/renderbuffer for rendering the hit detection polys 
    // Create framebuffer 
    glGenFramebuffersOES(1, &hitDetectionFbo); 
    glBindFramebufferOES(GL_FRAMEBUFFER_OES, hitDetectionFbo); 
    // Create colorbuffer 
    glGenRenderbuffersOES(1, &colorBuffer); 
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorBuffer); 
    // Create storage (RGBA) for color buffer 
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGBA8_OES, SCREEN_WIDTH, SCREEN_HEIGHT); 
    // Attach color buffer to framebuffer 
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, colorBuffer); 
    glDisable(GL_DEPTH_TEST); 
    glDepthMask(GL_FALSE); 

Ce ne signale aucun glErrors mais je manque clairement quelque chose, car rien n'apparaît à l'écran après je passe à mon nouveau OIR. Le programme rendra très bien si je continue à utiliser le framebuffer original (via un appel glBindFramebufferOES(GL_FRAMEBUFFER_OES, regularFbo)).

Merci pour l'aide, S

Répondre

1

Sur la plate-forme iPhone, la seule OIR qui peut être utilisé directement comme backbuffer est celui qui a un tampon de couleur qui a été allouée à l'aide:

[myEaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable: eaglLayer]; 

Si vous allouez un buffer couleur en utilisant glRenderbufferStorageOES, alors il s'agit d'un FBO hors écran normal, et le meilleur moyen de le faire apparaître est de le lier à une texture et de rendre un quad.

Questions connexes