Opengl es 调用多个glReadPixels&;在Opengl ES中,FBO上的GLDrawArray

Opengl es 调用多个glReadPixels&;在Opengl ES中,FBO上的GLDrawArray,opengl-es,fbo,glreadpixels,gldrawarrays,Opengl Es,Fbo,Glreadpixels,Gldrawarrays,在OpenGL ES中,是否可以依次多次调用FBO上的glReadPixels和glDrawArrays? 我面临的问题是,我把图像弄得乱七八糟 示例代码: // Activate Off-Screen FBO glBindFramebuffer(GL_FRAMEBUFFER, fboHandle); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, textureHandle); glViewport(0, 0, 640, 4

在OpenGL ES中,是否可以依次多次调用FBO上的
glReadPixels
glDrawArrays
? 我面临的问题是,我把图像弄得乱七八糟

示例代码:

// Activate Off-Screen FBO
glBindFramebuffer(GL_FRAMEBUFFER, fboHandle);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, textureHandle);
glViewport(0, 0, 640, 480);

// 1st Render
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(filter_A);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 640, 480, 0, GL_RGBA, GL_UNSIGNED_BYTE, rgb_pixels_A);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glReadPixels(0, 0, 640, 480, GL_RGBA, GL_UNSIGNED_BYTE, pixels_A);

// 2st Render
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(filter_B);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 640, 480, 0, GL_RGBA, GL_UNSIGNED_BYTE, rgb_pixels_B);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glReadPixels(0, 0, 640, 480, GL_RGBA, GL_UNSIGNED_BYTE, pixels_B);

// Back to the screen FB
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glActiveTexture(GL_TEXTURE0);
在使用glDrawArrays()进行渲染和使用glReadPixels()进行读取之间,需要调用eglSwapBuffers()。这是因为大多数OpenGL ES GPU都执行基于分片的延迟渲染。这篇文章应该有助于: