设定一个场景,要读取一个opengl渲染线程中一帧的画面到内存,能够使用glReadPixel函数,可是这个函数存在很糟糕的性能问题,为了解决这个问题能够使用以下步骤:java
1. 两个opengl渲染线程: A线程负责前台窗口的渲染,B线程在pbuffer上渲染,而且把A线程的渲染环境context设为共享,B线程的渲染环境使用A线程的context。 git
2. A渲染线程和B渲染线程共用一个纹理ID,两个线程作正常的渲染流程。github
3. B渲染线程使用glReadPixel函数读取画面信息,读取出来数据还不能直接使用,须要作一次转换。app
如上只是大体的流程,具体代码在个人github:https://github.com/ZhangGuangXin/AndroidOpengl 里面有一个包egl,专门经过配置egl实现contex共享,进而实现纹理共享。函数