是否可以在曲面视图中仅创建一个三维纹理,并在不同的曲面视图中使用相同的ID。在这里,我在3个面视图中创建相同的纹理,并占用内存空间的三倍。是否可以创建所有这些视图通用的纹理somwhere并在这些视图中使用它?

最佳答案

对。有几种方法。
最简单的方法是对所有三个surfaceviews使用相同的egl上下文。如果要在不同的surfaceview上绘制,请使用eglMakeCurrent()更改eglsurface。
稍微尴尬的方法是使用共享egl上下文,在最初创建第二个和后续egl上下文时配置共享egl上下文。每个surfaceview都有一个单独的上下文,但它们都可以看到相同的纹理(以及其他一些东西;请参见egl规范了解详细信息)。
你应该用什么取决于你需要什么。您可以在Grafika中看到这两种方法的示例,但它通常使用一个视图和一个mediacodec输入图面,而不是多个surface view。
与glsurfaceview相比,使用普通surfaceview要容易得多,因为glsurfaceview为您处理大多数egl上下文管理。grafika中的“show+capture-camera”活动使用与glsurfaceview共享的上下文,但必须跳过几个圈才能达到目的。

10-07 15:56
查看更多