opengl在多線程間的紋理共享

      設定一個場景,要讀取一個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共享,進而實現紋理共享。函數

相關文章
相關標籤/搜索