Android: Share a Texture Between GLSurfaceViews in Separate EGL Contexts
每个
我的问题是,是否有一种方法可以在多个
任何指导将不胜感激。谢谢。
您不能在多个GLSurfaceViews之间共享上下文,因为该API无法提供共享上下文的方法。您可以尝试对其进行分类,但这可能会以令人不愉快的方式破坏。解决此问题的最佳方法是使用普通的SurfaceView。
请记住,GLSurfaceView只是一个SurfaceView,带有一些用于管理线程和EGL上下文的帮助程序代码。如果您不介意编写该零件(或只是将其从Grafika中批发出来),则使用SurfaceView会更加方便。
对于您问题的另一部分,可以在EGL上下文中共享外部纹理,但这很冒险。 Grafika的"显示捕获相机"活动与为MediaCodec创建的第二个上下文共享GLSurfaceView上下文,并从这两个上下文中访问纹理。不幸的是,这样做不正确,导致出现竞争状况。错误报告解释了问题和建议的解决方案,并且具有指向EGL / GLES文档的链接,这些文档指定了当单独线程上的多个上下文共享纹理时的行为。
FWIW,我还没有看到有一个GPU不能解决所讨论的Activity,因此我认为共享没有根本性的问题。您只需要正确地做障碍。但是,使用单个上下文要容易得多。