如我们所知,我们可以选择纹理视图、表面视图和glsurfaceview进行android相机预览。
哪一个是相机预览的最佳选择?我专注于镜头的表现。

最佳答案

从表演角度来看,surfaceview是赢家。
使用SurfaceView,帧来自相机,并在不复制的情况下转发到系统图形合成器(SurfaceFinger)。在大多数情况下,任何缩放都将由显示处理器而不是GPU完成,这意味着不再扫描像素一次缩放,而是再次扫描,只扫描一次。
glsurfaceview是一个surfaceview,它有一些包装类来处理egl设置和线程管理。不能在接收相机帧的曲面上使用opengl es,因此您做的额外工作没有任何好处。(开销是小的一次性设置,而不是每帧,因此您可能无法测量差异。)
textureview将surface texture中的帧作为“外部”opengl es纹理接收,然后使用gles将它们渲染到应用程序的ui表面。缩放和渲染由gpu执行,然后将结果转发给surfaceflinger。这是最慢的选择,也是最灵活的观点。
如果您想进一步了解系统的工作原理,请参见Android Graphics Architecture document

10-07 19:40
查看更多