我正在使用 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 可以提高速度?
最佳答案
获取 OpenGL 数据的方式很糟糕(非常糟糕)(使用任何 glGet***
函数)。要复制纹理或将其部分复制到屏幕/其他纹理,您可以使用四边形绘制它。如果您需要像素数据进行某些逻辑处理,最好使帧缓冲区尽可能小并仅在必要时读取它。
关于opengl-es - 带有 FBO 的 glReadPixels 太慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8655111/