您现在的位置是:首页 >技术交流 >Android OpenGL 渲染相机预览画面显示体系网站首页技术交流

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

wk灬丨 2023-06-07 04:00:02
简介Android OpenGL 渲染相机预览画面显示体系

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

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

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

首先 Camera 把摄像头收集到的数据传给 SurfaceTexture,在初始化 SurfaceTexture 时会与一个纹理ID相互进行绑定,而一个纹理ID对应一个纹理对象,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中的相机滤镜部分

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。