gpt4 book ai didi

android - TextureView、SurfaceView、Texture和Surface的区别

转载 作者:行者123 更新时间:2023-12-01 21:55:39 30 4
gpt4 key购买 nike

我正在查看 Android 的 Camera2 API。在 https://github.com/googlesamples/android-Camera2Basic/blob/master/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java#L210 处的代码中,他们使用了类 SurfaceViewTextureViewTextureSurface 而没有过多解释。在区分这 4 个类时,文档也不是很有帮助。

因此,我的问题是:什么是 SurfaceViewTextureViewTextureTexture?他们有什么区别?他们有什么区别?有什么用?

每一个非文档类的解释都会很棒。

提前致谢

最佳答案

Surface 是一个通用对象,可以在其中绘制图像缓冲区,它被许多 Android API 接受为输出目标。

camera2 API 是其中之一,但 EGL、MediaCodec 等也都可以使用它们。可以接受图像缓冲区的具体端点通常可以以一种或另一种方式转换为 Surface。这些包括诸如某些 Android View、用于视频编码的 MediaRecorder 等媒体类、用于高效 CPU 访问底层图形缓冲区的 ImageReader 类等

SurfaceView 是一个表示硬件覆盖表面的 Android View ;这是将图像缓冲区绘制到屏幕上的最有效方法。因为它表示低级显示原语,所以使用起来有点笨拙;您可以从其 SurfaceHolder 子对象的生命周期回调中为其获取一个 Surface。

TextureView 是一种通过 GPU 绘制图像缓冲区的 Android View 。它比 SurfaceView 更灵活,但需要 GPU 组合才能运行,因此会增加一些延迟和功率开销。它可以提供用于绘制的 SurfaceTexture。

SurfaceTexture 是可以绘制的 GPU 纹理的表示。您可以在 EGL 中使用它通过它的纹理 ID 进行渲染,并且您可以通过其中一个 Surface 构造函数从它创建一个 Surface 以提供给其他 API 进行绘制。 TextureView 使用它是因为它是基于 GPU 的 View 。

关于android - TextureView、SurfaceView、Texture和Surface的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57512168/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com