Android OpenGL 渲染相机预览画面显示体系

OpenGL能进行高效得渲染图形图像,并支持各种复杂的特效和动画。

而在 Android 当中,运用的是OpenGL ES,它是OpenGL的一个轻量级版本,专门用于在移动设备、游戏控制台、嵌入式系统等嵌入式环境中使用。

它可以做相机滤镜或者图片滤镜的效果,以相机滤镜为例:

首先 Camera 把摄像头收集到的数据传给 SurfaceTexture,SurfaceTexture 将数据转换为OpenGL  ES可用的纹理,并将其更新到绑定的纹理对象中,OpenGL 根据纹理ID获取到纹理对象后,渲染成帧数据,再通过 EGL 显示在 Surface 上。


纹理:是一种可以被 OpenGL 识别和使用的渲染数据源

纹理对象:是一个用于存储和处理纹理数据的对象

纹理ID:用于标识和操作这个纹理对象的唯一编号,类似于身份证号码

SurfaceTexture:将数据转换为OpenGL ES可用的纹理,并将其更新到绑定的纹理对象中,以供OpenGL ES进行渲染和显示

EGL:它是OpenGL ES与底层窗口系统(如Android、Linux等)之间的中间层,用于管理与窗口系统的交互以及OpenGL ES渲染表面的创建、绑定和显示等操作。


关于 GLSurfaceView: 

GLSurfaceView是Android SDK提供的一个用于显示OpenGL ES图形渲染结果的视图,其主要特点是可以在独立的线程上进行OpenGL渲染,以避免卡顿和界面卡死的问题。最主要是提供EGLOpenGL ES环境的创建和管理,这些环境是OpenGL渲染的基础。

详细的逻辑可以参考:https://github.com/xufuji456/FFmpegAndroid中的相机滤镜部分

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值