在我的应用程序中,我需要对图像进行与亮度相关的操作。我完成了以下事情
更改图像的亮度。
-(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];
}
当我尝试使用亮度保存图像时出现问题。实际上它正在保存以前的图像,即没有亮度的图像
任何人都可以帮助我,如何使用渲染缓冲区保存图像?
感谢,
Sagar的
答案 0 :(得分:0)
你只是在屏幕上做的工作,可以这么说。您实际上并未阅读屏幕并将该数据保存到文件中。基本上你需要使用glReadPixels从屏幕缓冲区获取数据,然后将该缓冲区保存为修改后的图像。以下是更多细节: