哪个视图是 android 相机预览的最佳选择?
Which View is best choice for android camera preview?
我们知道,我们可以选择TextureView、SurfaceView和GLSurfaceView for android 相机预览。
哪个是相机预览的最佳选择?我专注于相机性能。
" SurfaceView 在 Android 窗口系统中创建了一个新的 window。它的优点是,如果 SurfaceView 被刷新,只有这个 window 会被刷新。如果你另外更新 UI 元素(在 window 系统的另一个 window 中),然后两个刷新操作都会阻塞它们自己(特别是当 ui 绘图是硬件支持的时候),因为 opengl 无法处理多正确画线。
对于这种情况,最好使用 TextureView,因为它不是 Android 窗口系统的另一个 window。因此,如果您刷新视图,所有 UI 元素也会刷新。 (可能)所有内容都在一个线程中。
希望我能帮到你们中的一些人! “
资料来源:whosebug.com
GLSurfaceView 是一个带有包装器的 SurfaceView class,它可以为您完成所有 EGL 设置和线程间消息传递。
使用什么完全取决于您。他们各有利弊 :)
从性能的角度来看,SurfaceView 是赢家。
使用 SurfaceView,帧来自相机并被转发到系统图形合成器 (SurfaceFlinger),无需复制。在大多数情况下,任何缩放都将由显示处理器而不是 GPU 完成,这意味着不是扫描像素一次进行缩放然后再次扫描输出,而是只扫描一次。
GLSurfaceView 是一个带有一些包装器 类 的 SurfaceView,用于处理 EGL 设置和线程管理。你不能在接收相机帧的 Surface 上使用 OpenGL ES,所以你在做额外的工作而没有任何好处。 (开销是次要的一次性设置,而不是每帧,因此您可能无法衡量差异。)
TextureView 接收 SurfaceTexture 中的帧作为 "external" OpenGL ES 纹理,然后使用 GLES 将它们渲染到应用程序的 UI 表面上。缩放和渲染由 GPU 执行,然后将结果转发给 SurfaceFlinger。这是最慢的选项,但也是最灵活的视图。
如果您想了解有关系统工作原理的更多信息,请参阅 Android Graphics Architecture document。
我们知道,我们可以选择TextureView、SurfaceView和GLSurfaceView for android 相机预览。
哪个是相机预览的最佳选择?我专注于相机性能。
" SurfaceView 在 Android 窗口系统中创建了一个新的 window。它的优点是,如果 SurfaceView 被刷新,只有这个 window 会被刷新。如果你另外更新 UI 元素(在 window 系统的另一个 window 中),然后两个刷新操作都会阻塞它们自己(特别是当 ui 绘图是硬件支持的时候),因为 opengl 无法处理多正确画线。
对于这种情况,最好使用 TextureView,因为它不是 Android 窗口系统的另一个 window。因此,如果您刷新视图,所有 UI 元素也会刷新。 (可能)所有内容都在一个线程中。
希望我能帮到你们中的一些人! “ 资料来源:whosebug.com
GLSurfaceView 是一个带有包装器的 SurfaceView class,它可以为您完成所有 EGL 设置和线程间消息传递。
使用什么完全取决于您。他们各有利弊 :)
从性能的角度来看,SurfaceView 是赢家。
使用 SurfaceView,帧来自相机并被转发到系统图形合成器 (SurfaceFlinger),无需复制。在大多数情况下,任何缩放都将由显示处理器而不是 GPU 完成,这意味着不是扫描像素一次进行缩放然后再次扫描输出,而是只扫描一次。
GLSurfaceView 是一个带有一些包装器 类 的 SurfaceView,用于处理 EGL 设置和线程管理。你不能在接收相机帧的 Surface 上使用 OpenGL ES,所以你在做额外的工作而没有任何好处。 (开销是次要的一次性设置,而不是每帧,因此您可能无法衡量差异。)
TextureView 接收 SurfaceTexture 中的帧作为 "external" OpenGL ES 纹理,然后使用 GLES 将它们渲染到应用程序的 UI 表面上。缩放和渲染由 GPU 执行,然后将结果转发给 SurfaceFlinger。这是最慢的选项,但也是最灵活的视图。
如果您想了解有关系统工作原理的更多信息,请参阅 Android Graphics Architecture document。