【问题标题】:Using 2 SurfaceView lag使用 2 SurfaceView 滞后
【发布时间】:2014-05-07 07:47:28
【问题描述】:

我想用 jPCT 显示 3D 对象,所以我使用自定义 GLSurfaceView.Renderer 来显示我想要的。在下面,我需要显示一个相机预览。

它工作正常,但我的问题是当我显示 2 个 SurfaceView(1 个用于对象,1 个用于相机预览)时,我的软件出现了延迟。我测试了一下,是因为我同时使用了2个SurfaceView。

我该如何解决?我尝试在扩展 GLSurfaceView 的相机预览上显示我的 3D 对象:

public class CameraView extends GLSurfaceView implements SurfaceHolder.Callback

但是对象永远不会显示并且某些功能不起作用(例如在 2D 视图中搜索 3D 对象...)

有人有想法吗?

【问题讨论】:

    标签: java android glsurfaceview jpct


    【解决方案1】:

    有几种可能性。一是渲染器线程之间存在一些导致延迟的交互。另一个是添加额外的层会导致系统执行额外的 GLES 合成,这会减慢您的速度。 (背景见this doc。)

    “对象从不显示”声明让我有点不确定实际问题是什么。

    无论哪种方式,纠正此问题的一种方法是消除相机 SurfaceView。您可以将相机预览发送到 SurfaceTexture (API 11+),然后将主 GLSurfaceView 上的内容渲染为纹理四边形。这方面的一个例子可以在Grafika的“相机纹理”活动中找到。

    【讨论】:

    • 使用 SurfaceTexture 是个好主意。但我不明白它是如何工作的......你有一个简单的例子来解释如何使用 SurfaceView 并与主 GLSurfaceView 链接?
    • Grafika 中的“相机纹理”活动(从答案链接)相对简单——涉及很多部分,所以它不会是微不足道的。我在那里使用普通的 SurfaceView 而不是 GLSurfaceView。 “显示 + 捕获相机”活动使用 GLSurfaceView,并且还记录相机输出,但它有点复杂(部分原因是 GLSurfaceView 正在管理渲染线程并且活动想要使用共享的 EGL 上下文)。 FWIW,解释在这里:source.android.com/devices/graphics/architecture.html
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多