2010-09-09 2 views
0

Dans mon application, je dois effectuer une opération de luminosité sur l'image. J'ai fait avec les choses suivantesOpen GL + Luminosité de l'image + sauvegarde de l'image

  1. Obtenir l'image de la photothèque.
  2. Dessiner cette image en utilisant l'Open GL.
  3. Modification de la luminosité de l'image.

    -(void) DoBrightness:(float) aBrightness 
    { 
    [EAGLContext setCurrentContext:context]; 
    
        // Clear the buffer 
    
        glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); 
        glClearColor(0.0, 0.0, 0.0, 0.0); 
        glActiveTexture(GL_TEXTURE0); 
        glVertexPointer(2, GL_FLOAT, 0, spriteVertices); 
        glEnableClientState(GL_VERTEX_ARRAY); 
        glTexCoordPointer(2, GL_SHORT, 0, spriteTexcoords); 
        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 
    
        if (aBrightness >= 1.0f) { 
         glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_ADD); 
         glColor4f(aBrightness-1, aBrightness-1, aBrightness-1, aBrightness-1); 
        } else { 
         glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_SUBTRACT); 
         glColor4f(1-aBrightness, 1-aBrightness, 1-aBrightness, 1-aBrightness); 
        } 
        glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE); 
        glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PRIMARY_COLOR); 
        glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); 
        glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE); 
    
        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 
    
        // Display the buffer 
        glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); 
        [context presentRenderbuffer:GL_RENDERBUFFER_OES]; 
    } 
    

problème vient lorsque je tente de sauver l'image avec la luminosité. En fait, il sauve l'image précédente i.e image sans luminosité

peut-on m'aider, comment enregistrer l'image en utilisant le tampon rendu?

grâce,

Sagar

Répondre

0

Vous faites seulement le travail sur l'écran, pour ainsi dire. Vous n'êtes pas en train de lire l'écran et de sauvegarder ces données dans un fichier. Fondamentalement, vous devez utiliser glReadPixels pour obtenir les données à partir du tampon d'écran, puis enregistrez ce tampon en tant qu'image modifiée. Il y a plus de détails dans les domaines suivants:

How do I grab an image from my EAGLLayer ?

+0

Merci, il a sauvé le contenu rendu. En fait, je suis novice pour OpenGL, donc je vais doucement. J'obtiens maintenant l'erreur "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES". –

Questions connexes