V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lixyz
V2EX  ›  Android

TextureView 的内容如何在 GLSurfaceView 中显示

  •  
  •   lixyz · 333 天前 · 6947 次点击
    这是一个创建于 333 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在的情况是,在 TextureView 中可以正常播放视频,但是业务需求,需要将 TextureView 改为 GLSurfaceView 。

    百度谷歌一大圈,需要设置 render 之类到,surfaceTexture 之类的,有点儿懵逼,OpenGL 完全不懂,所以完全无从下手。

    有没有老哥懂到,可以讲讲思路,事情搞定了有红包。

    感谢感谢

    5 条回复    2023-12-10 23:02:14 +08:00
    across
        1
    across  
       333 天前   ❤️ 1
    以前用 unity 做 android app 嵌入时看过一点,为了让 Unity 窗口做背景,原生控件叠加上层。
    有四五年了,只有大概的印象了。

    一般 View 内部封装好了渲染逻辑,开发只关心视图数据+操作。说到底,View 内部有一张“画面贴图”,GLSurfaceView 就是把这张贴图暴露了出来,开发者可以自己用 OpenGL 绘制画面内容。
    比如我用 OpenGL 画了一些 3D 场景,OpenGL 内部输出是一张贴图( Texture ),这张贴图靠 SurfaceTexture 类型与 Android 层实现对接。SurfaceTexture 只是单纯的实现“画面绘制”,外部被 View 封装管理。

    按你的需求,视频播放需要改为 GLSurfaceView ,要实现画面滤镜,字幕嵌入等操作?
    OpenGL 讲起来就麻烦了,这里概念太多了,和原生开发独立的一套知识体系。
    流程差不都就这样:
    1. 创建一张 OpenGL 的 Texture , 和 SurfaceTexture 绑定
    2. SurfaceTexture 和 GLSurfaceView 关联
    3. SurfaceView 和 其他原生 view 一样操作,SurfaceTexture 内部反正是交给 OpenGL 那边的环境操作了。
    Helsing
        2
    Helsing  
       333 天前 via iPhone
    问 GPT 吧,最快了
    lixyz
        3
    lixyz  
    OP
       333 天前
    @across 感谢您写了这么多,需求确实是要实现画面滤镜,因为涉及到一堆 Surface SurfaceTexture Render 之类到概念,之前基本没有接触过,所以一脸懵逼无从下手,我再仔细找找吧,感谢感谢

    @Helsing 已经 GPT 过了,还是一脸懵逼 T_T
    guchengyehai1
        4
    guchengyehai1  
       332 天前 via iPhone
    @lixyz 给个联系方式,如果还没搞定,明天我给个方案你
    lixyz
        5
    lixyz  
    OP
       332 天前
    不好意思,刚刚看到,绿泡泡:ligb1022 @guchengyehai1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3055 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:56 · PVG 20:56 · LAX 04:56 · JFK 07:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.