【问题标题】:Open GL + Brightness of image + saving imageOpengl +图像亮度+保存图像
【发布时间】:2010-09-09 14:43:40
【问题描述】:

在我的应用程序中,我需要对图像进行亮度相关的操作。我完成了以下事情

  1. 从照片库中获取图片。
  2. 使用 Open GL 绘制该图像。
  3. 改变图像的亮度。

    -(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];
    }
    

当我尝试以亮度保存图像时出现问题。实际上它正在保存以前的图像,即没有亮度的图像

谁能帮帮我,如何使用渲染缓冲区保存图像?

谢谢,

萨加尔

【问题讨论】:

    标签: iphone opengl-es


    【解决方案1】:

    可以这么说,您只是在屏幕上进行工作。您实际上并没有阅读屏幕并将该数据保存到文件中。基本上,您需要使用 glReadPixels 从屏幕缓冲区获取数据,然后将该缓冲区保存为修改后的图像。下面有更多细节:

    How do I grab an image from my EAGLLayer ?

    【讨论】:

    • 谢谢,它保存了渲染的内容。实际上我是 OpenGL 的新手,所以慢慢来。我现在收到“GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES”错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多