问候。快速复制两个FBO之间或从FBO到OpenGL-ES中的纹理1.1
我的目标是实现一个流水线,用于处理具有“当前”和“前一个”帧的视频帧。它需要在某些场合将“先前”帧中的一个子区域复制到“当前”帧中。这是一种解码器,它是更大应用程序的一部分。
这是我使用OpenGL-ES 1.1
glCopyTexSubImage2D .--------------------\ glTexSubImage2D V glDrawArray |
形象至今运行在iPhone上------------------- ------->纹理--------------> FBO /纹理------->渲染缓冲区
纹理获取每个新帧或部分框架照常更新。 纹理被绘制到帧缓冲区对象中并最终呈现。
这些零件表现非常好。
问题是glCopyTexSubImage2D,它使用仪器分析显示,它占用了大约50%的CPU;它看起来像在使用CPU进行复制。呸。
在我发布代码之前(我会很乐意这样做),我想问这个架构是否合理?
该项目的下一个阶段是与另一个GL上下文共享最终的FBO /纹理以渲染到外部屏幕。我在这里阅读了关于共享资源的微妙性质的其他帖子。
感谢您的任何指导。
Cheers,Chris
P.S.让图看起来不错,我遇到了一些麻烦。回流线应从FBO/Texture节点到Texture节点。
你是否用图像 - > FBO /纹理 - > FBO /纹理 - >渲染缓冲区使用GL原语(或glDrawTexiOES,因为iPhone实现了OES_draw_texture)来执行渲染回来?这肯定会跳过任何直接的CPU参与,但它意味着一个额外的帧缓冲区上下文切换。 – Tommy 2011-03-08 01:57:33
男人,自从我发布这个问题已经很长时间了,我真的为延迟道歉。我现在在一个不同的项目上,但要回答你......不,我没有尝试过。感谢您的建议。 – Buddhisthead 2014-02-19 19:10:57