Android Camera OpenGL FBO的理解

本文介绍了Android系统中OpenGL渲染的基础,重点讨论了帧缓冲区(FBO)的概念、需求及理论。FBO允许离屏渲染和渲染到纹理,满足如视频加水印、Camera实时滤镜等特殊需求。通过FBO,开发者可以实现更灵活的图像处理和显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景概念:

首先,Android显示系统中,系统默认的渲染器是OpenGL,混合使用skia,各个厂商可能有不同的实现,大部分都是OpenGL。 Android在系统启动时,经过BootLoader启动、kernel启动后,进入第三阶段,init进程会启动一系列的核心进程,其中包括ServiceManager、zygote、OpenGL,OpenGL是显示系统的基础,OpenGL启动之后,就可以播放动态的开机动画了。所以说,Android渲染的基础的OpenGL,而OpenGL渲染管线的最后一个阶段,就是帧缓冲区(FrameBuffer)。这也是文章讨论的重点。

FBO的现实需求:

前面提到,OpenGL渲染管线的最后一个阶段,就是帧缓冲区(FrameBuffer)。对于帧缓冲区,Android系统中默认有一个缓冲区,英文名称window-system-provided framebuffer,用于屏幕显示。 当GPU往显示缓冲区写入数据后,屏幕会显示这个缓冲区的内容。这是一个生产者消费者模型,大多数情况下能满足我们的需求。
而对于Android某些特殊需求来说,比如给视频加水印后渲染保存,比如Camera实时滤镜。 这些都需要把视频的原始data经过一定的处理后保存、或者再进行显示。

对于一般的Camera来说,我们用于预览/录制的Surface都是由Android系统提供给OpenGL渲染的帧缓冲区,OpenGL的所有渲染结果都是直接到达到帧缓冲区,这是on-screen的渲染方式;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值