glOadPixels与FBO太慢了

时间:2011-12-28 11:08:04

标签: opengl-es framebuffer glreadpixels

我正在使用openGL ES 2.0和GLSL着色器,并使用Renderbuffer(即屏幕外渲染)处理FBO。
它在 30 fps 下工作正常 但是当我使用glReadPixels或glcopyteximage2d时,它会降至 8 fps
我做了类似的事情:

glBindFramebuffer(GL_FRAMEBUFFER, frameBuf);
//DRAW something
glReadPixels(...); //HERE
glBindFramebuffer(GL_FRAMEBUFFER, 0);

无论如何我可以提高速度吗?我的意思是当我不使用FBO并使用具有相同参数的glReadPixels时,它工作 15 fps 我认为使用FBO可以提高速度吗?

1 个答案:

答案 0 :(得分:5)

获取OpenGL数据(使用任何glGet***函数)的方法很糟糕(非常糟糕)。要将纹理或某些部分复制到屏幕/其他纹理,您可以使用四边形绘制它。如果您需要某些逻辑处理的像素数据,最好使帧缓冲尽可能小,并在必要时读取它。