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

news2024/9/24 9:25:40

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中的相机滤镜部分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于html+css的图片展示31

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

yield用法理解,配有代码块和解析

包含 yield 关键字的函数,是一个生成器 yield和return的区别 1、return是返回return关键字的值,被调用一次就返回一次,return只能放在一个函数代码块的最后面,运行到return的时候,就结束循环,结束这个函数…

IO、存储、硬盘、文件系统相关常识

目录 IO 文件系统 存储 存储这些数据的硬盘 IO io分为io设备和io接口, 我们日常生活中的打印机, 固态硬盘等都是io设备. IO(Input-Output)是指计算机中输入输出的相关操作,包括数据的读取、存储、传输和显示等。存储是指将数据保存在计算…

美国肝素钠专用树脂,医药肝素钠提取工艺专用树脂

具有控制孔径的大孔强碱性Ⅰ型阴离子交换树脂 Tulsimer A-72 MP 是一款具有便于颜色和有机物去除的控制孔径的,专门开发的大孔强碱性Ⅰ型阴离子交换树脂。 Tulsimer A-72 MP专门应用于去除COD以及其他有机物等。 Tulsimer A-72 MP 由于其本身的大孔特性而显示出…

电巢携手中国自动化学会:计算机能有感情史了

4月22日,为了促进模式识别、数据挖掘和计算机视觉等相关领域从业者进一步了解领域内最新发展动态与前沿技术进展,由中国自动化学会主办,中国自动化学会模式识别与机器智能(CAA-PRMI)专委会、中国计算机学会&#xff08…

Python OpenCV 蓝图:6~7

原文:OpenCV with Python Blueprints 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最好真…

【Cartopy基础入门】如何更好的确定边界显示

原文作者:我辈理想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 Cartopy基础入门 【Cartopy基础入门】Cartopy的安装 【Cartopy基础入门】Geojson数据的加载 【Cartopy基础入门】如何更好的确定边界显示 文章目录 Ca…

苯酚吸附树脂

苯酚作为一种重要的化工原料,主要用于生产酚醛树脂,双酚A,己内酰胺,壬基酚,水杨酸等,此外还可以做溶剂,试剂盒消毒剂等,在合成纤维,合成橡胶,塑料&#xff0c…

我国采矿采石设备制造行业发展现状与部分产品市场分析

一、行业基本概述 采矿采石设备制造,指地下或露天,用于对金属、煤炭、石油、化工等各种矿石或建筑用石的开采设备制造,以及矿石筛选、分类、分离、洗选、轧碎或类似加工工艺使用的专用机械的制造。 根据观研报告网发布的《 中国采矿采石设备…

5年测试总结,自动化测试DevOps-CICD持续集成流程设计...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 测试进阶&#xf…

JS对Json数组进行抽取 获取key: “value“

这篇文章不是拿key或value 是抽取需要的 key: “value” 【必须是单一数组 若是多组数据需要for循环】 // row 是json串 !!! 一、我有一个单一的json【row】 只要 id 和 appStatus 且分开成新数组 let list [];for (var key in row) {var temp {}if (key "id") {…

MyBatis-Plus多数据源dynamic-datasource解决多线程情境下数据源切换失效问题

前言:项目中使用MyBatis-Plus多数据源dynamic-datasource,完成多数据源的切换;但是在并发场景下,我们会发现线程会一直访问默认数据源(配置的Master数据),并没有访问我们在上一步切换后的数据源…

如何把电脑文件备份?本指南很详细

概述:当文件发生丢失的时候,如果我们有备份,直接进行还原就可以了。可见备份的重要性。如何把电脑文件备份?本文将为大家详细介绍。 一、为什么要备份文件 我们在电脑上面会保存很多文件,有的文件是很重要的&#xf…

基于vfw的局域网语音聊天室系统源码论文

语音视频聊天 UDP套接字的运用 在实现语音视频聊天时,采用的是基于UDP套接字的点对点模式,而UDP面向的是无连接的数据服务,其套接字的使用如图10所示。 图10 UDP套接字的使用 视频的捕获 利用VFW接口,视频捕获可以分为以下几个步骤: 建立视频采集窗口…

如何把数据库中的数据显示到页面

主要内容:使用JDBC访问数据库中数据(Java Web数据可视化案例) 文章目录 前期准备:案例:第一步:创建数据库及数据第二步:编写实体类第三步:编写Dao类第四步:编写Servlet代…

SpringBoot中使用redis事务

本文基于SpringBoot 2.X 事务在关系型数据库的开发中经常用到,其实非关系型数据库,比如redis也有对事务的支持,本文主要探讨在SpringBoot中如何使用redis事务。 事务的相关介绍可以参考: 0、起因 在一次线上事故中,我们…

与春相拥,在职读研邂逅中国人民大学与加拿大女王大学金融硕士项目何其有幸

工作几年后的你是否有冒出在职读研的想法?或许你为此纠结了一段时间,在职读研要考虑到的因素众多,年龄、精力分配等,工作几年,经历了职场的磨练,更能知道自己家想要的是什么,对于是否读研会有一…

红海云签约长久数科,引领汽车流通行业人力资源数字化创新

上海铂中数字科技有限公司(以下简称“长久数科”)是国内领先的数字化汽车供应链服务企业,致力于通过整合客户资源、技术资源、产业链配套资源以及地面服务资源,打造一站式服务的汽车生态大数据SaaS平台。 近日,长久数…

编译原理陈火旺第三版第六章课后题答案

下面的答案仅供参考! 1.按照表6.1所示的属性文法,构造表达式(4*71) *2的附注语法树。 答: 首先考虑最底最左边的内部结点,它对应于产生式F→digit,相应的语义规则为F. val: digit.lexval,由于这个结点的子结点digit的属性digit . lexval的…

一文彻底理解Java 17中的新特性密封类

密封类的作用 在面向对象语言中,我们可以通过继承(extend)来实现类的能力复用、扩展与增强。但有的时候,有些能力我们不希望被继承了去做一些不可预知的扩展。所以,我们需要对继承关系有一些限制的控制手段。而密封类…