我正在使用 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/