Android ndk 多个SurfaceView渲染目标和vsync

Android ndk 多个SurfaceView渲染目标和vsync,android-ndk,Android Ndk,我的目标是在屏幕上同时显示多个(小)窗格的视频 我更喜欢使用硬件标量。目前,这对于单个表面上的单个视频效果良好。对于多个流,似乎需要多个SurfaceView-我看不到使用硬件定标器将多个图像blit到同一曲面的不同部分的方法。将图像像素锁定/blit到这些曲面的最佳方法是什么 ANativeWindow\u unlock和post会导致等待vsync+交换(我想是吧?),所以我不能在同一个更新周期内调用每个SurfaceView(我可以,但我会非常紧张) 一种替代方法是为每个SurfaceVi

我的目标是在屏幕上同时显示多个(小)窗格的视频

我更喜欢使用硬件标量。目前,这对于单个表面上的单个视频效果良好。对于多个流,似乎需要多个SurfaceView-我看不到使用硬件定标器将多个图像blit到同一曲面的不同部分的方法。将图像像素锁定/blit到这些曲面的最佳方法是什么

ANativeWindow\u unlock和post会导致等待vsync+交换(我想是吧?),所以我不能在同一个更新周期内调用每个SurfaceView(我可以,但我会非常紧张)


一种替代方法是为每个SurfaceView使用单独的渲染线程。这似乎是一条明智的道路吗?是否有其他方法可以通过一次等待vsync+交换来更新多个SurfaceView?

您的视频是如何到达的?您是否可以将它们发送到SurfaceTextures,并使用GLE将它们渲染到单个GLSurfaceView?帧,这些帧通过ffmpeg avpicture_fill到达。你的想法很有趣……我可以不在CPU上缩放就将它们“发送”到SurfaceTexture吗?啊,如果帧到达软件缓冲区,你不想使用
SurfaceTexture
。您可以将每个源绑定到单独的纹理ID,并使用
glTexImage2D
上载帧。在绘制时,只需绘制N个矩形,一次一个,绑定适当的纹理。GL将在渲染期间执行任何适当的缩放。谢谢。这对非2倍尺寸的框架有效吗?也许。GLES2支持NPOT纹理,但有一定限制。如果这是一个问题,您可以解决它——例如,请参见中的两个答案。