3

我正在使用 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 可以提高速度?

4

1 回答 1

5

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

于 2011-12-28T11:54:14.957 回答