【问题标题】:render camera in openles 2.0 with forced delay强制延迟在openles 2.0中渲染相机
【发布时间】:2016-09-15 19:45:30
【问题描述】:

是否可以在 openles 2.0 中强制延迟渲染相机?例如延迟是 5 帧?现在我正在使用表面纹理和 opengles-2.0 渲染输出。

【问题讨论】:

    标签: android android-camera opengl-es-2.0 render


    【解决方案1】:

    如果您每秒接收 30 帧,并且想要引入 5 帧的恒定延迟,则需要对这 5 帧进行一些处理。

    SurfaceTexture 不做(很多)缓冲。因为生产者和消费者端点在同一个进程中,所以很容易通过超越消费者而导致死锁。所以 SurfaceTexture 在“异步”模式下使用 BufferQueue,这意味着如果消费者还没有为下一个做好准备,它会丢弃帧。

    因此,您需要一种方法来进行自己的缓冲,这意味着将数据从“外部”纹理中复制出来。一种方法是将纹理渲染到一系列 FBO,稍后您可以从中渲染。请务必注意此处的内存使用情况——一张 1920x1080 32 位 ARGB 图像占用大约 8MB,因此保持 5 左右会使您的内存占用增加 40MB。

    可能会导致颜色保真度的损失,因为会涉及到 YUV 到 RGB 的转换,但如果您的最终目标是 RGB,那么这应该无关紧要。

    所以这是可能的,但并不容易。你想完成什么?

    【讨论】:

    • 我正在尝试将渲染延迟调整为 AR 库的延迟(它正在使用固定延迟)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2016-01-10
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多