在Android平台一般使用OpenGL ES进行图像处理。在OpenGL ES中编写算法,实现效果,最后将处理的结果传输给 CPU,然后生成最终的照片。

直播中的美颜,对性能有很高的要求,无法使用特别复杂的算法。我们只能在算法和美颜效果之间找个平衡点。

OpenGL ES - 嵌入式加速3D图像标准 http://cn.khronos.org/opengles

OpenGL® ES是一个用于嵌入式系统全功能2D和3D图像的免版税、跨平台API—包括控制台、电话、家用电器和车辆。由桌面OpenGL定义明确的子合集组成,其创造了一个软件和图像加速之间灵活而有力的低水平接口。OpenGL ES包括浮点和定点系统配置文件以及本地窗口系统的便携式绑定EGL™规范。OpenGL ES 1.X用于固定功能硬件并提供加速、图像质量和性能。OpenGL ES 2.X实现3D图像的完全可编程。OpenGL SC是用于安全高要求市场。
概览OpenGL ES API配置文件和版本
OpenGL ES 1.X

固定功能硬件: OpenGL ES 1.1是相对于 OpenGL 1.5 定义 的规范,着重强调API的硬件加速,但是对1.0完全实现向后兼容。其加强了功能性、改善图像质量并优化至更高的性能,同时降低内存带宽以节约能源。OpenGL ES 1.1扩展包是添加至OpenGL ES 1.1的一系列可选扩展项,降低可变性并带来图像质量和性能的巨大改进。 了解更多…
OpenGL ES 2.X – 用于可编程硬件

可编程硬件: OpenGL ES 2.0是相对于 OpenGL 2.0定义 的规范,着重强调可以创建着色程序和程序对象能力、用OpenGL ES着色语言编写着色程序顶点和碎片能力的可编程3D图像管线。OpenGL ES 2.0不支持OpenGL ES 1.x的固定功能转换和碎片管线。了解更多…

OpenGL ES 2.0 规范、头文件和可选扩展规范
OpenGL ES 2.0 在线手册页面
OpenGL ES 2.0 快速参考卡

更多OpenGL ES细节:
免版税 2D/3D API,包括桌面OpenGL定义明确的子合集。

OpenGL® ES是一个低水平、轻量级的API,用于使用OpenGL定义明确的子合集的高级嵌入式图像。其在软件应用程序和硬件或者软件图像引擎间提供了一个低水平应用程序界面(API)。

此标准3D图像API用于嵌入式系统,使之更加简便和价格合理地提供各种高级3D图像和游戏,横跨所有主要的移动和嵌入式平台。因为OpenGL ES(OpenGL用于嵌入式系统)是基于OpenGL的,所以不需要新的技术。这确保了与到达和来自OpenGL桌面迁移路径的协同作用—最被广泛采用的跨平台图像API。

开发者优势

行业标准和免版税
任何人都可以下载OpenGL ES规范并在OpenGL ES基础上执行并运行产品。凭借巨大的行业支持,OpenGL ES是唯一真正开放、厂商中立、多平台的嵌入式图像标准。其标准化更高水平的抽象意味着开发人员可以把更多的精力放在内容方面,而不是少数代码和平台的细节问题。
占用空间小 & 低耗能
嵌入式空间涵盖范围非常广,从配有64兆内存的400 Mhz的掌上电脑到配有1兆内存的50Mhz移动电话。OpenGL ES是为适应这些区别而设计的,通过最小化数据存储要求、最小化指令/数据通信、适应整体和浮点,以实现最低空间占用。对于使用者而言,这意味着更小的二进制下载,可以减少在设备上的存储空间占用。
从软件到硬件渲染的无缝连接
尽管OpenGL ES规范定义的是一个特殊图像处理管线,个别的要求可以在专用硬件上履行,在系统CPU上作为一个软件程序运行,或者作为专用硬件和软件程序的联合体运行。这意味着如今的软件开发者可以使用符合标准的软件3D引擎,实现应用程序和工具的无缝连接,将OpenGL ES用于更高耗能设备的硬件加速。
可扩展 & 演变
新的硬件创新可以通过OpenGL扩展机制的API进入OpenGL ES,同时API的更新十分简便。因为扩展性逐渐被广泛接受,也正在考虑被融入到核心OpenGL ES标准中。此处理使OpenGL ES可以演变为一种可控同时创新的方式。
使用简单
基于OpenGL,OpenGL ES拥有直观设计与逻辑指令的良好结构。
文件管理有序
因为OpenGL ES是以OpenGL为基础的,大量的相关示范代码使关于OpenGL ES的相关信息价格低廉同时方便查找。通过OpenGL ES的介绍,开发人员现在为从手机到超级计算机可以编写基本一样的代码。

符合性测试

规范每年要经过检查和修改。要被标注为OpenGL ES合格实施,其必须通过一套的符合性测试。该符合性测试的定义将作为OpenGL ES文件编制的一个独立部分进行维护。
OpenGL ES 的2个轨迹路线图

OpenGL ES路线图是专门为嵌入式行业的各种需求设计的,包括”1.X”和”2.X”规范路线的两个轨迹,并将同时开发。1.X路线图将继续为新一代固定功能3D加速器进行开发,同时2.X路线图将实现新兴可编程3D管线。该双轨迹路线图使OpenGL ES可以满足大量3D的图像要求,用于嵌入式市场的各种设备和平台,从低端的手机到高端的游戏控制器。Khronos致力于提供每个1.X 和2.X轨迹的各个API版本间的向后兼容性,以确保应用程序可以在各个版本间顺利地传输。
Two Tracks for OpenGL ES
OpenGL ES框架
OpenGL ES Momentum

配置文件:
OpenGL ES规范包括许多配置文件的定义。每个配置文件是一个版本桌面OpenGL规范的子集以及一些其他的OpenGL ES特有扩展。OpenGL ES配置文件是整个OpenGL衍生应用程序界面庞大家族的一部分。同样地,这些配置文件分享了一个相似的处理管线、指令结构还有一样的OpenGL名字空间。必要的是,扩展性是为了扩大已有的桌面OpenGL功能。OpenGL ES专有的扩展性在OpenGL ES配置文件中扮演的角色就像是相对于OpenGL规范的OpenGL ARB扩展性作用。OpenGL ES专有扩展性既是计划未来融入核心配置文件修订版的功能的前驱,也是重要但非主流的功能的形式化。每个配置文件定义都意味着一个独特的头文件和链接/运行时间库,定义配置文件中的指令和符号。为简化维护一个单独的超集,可以用相应的假定预处理指令定义数据头,来控制符号和指令原型的可见性。在运行时间,一个应用程序可以决定哪个配置文件在用OpenGL版本字符串运行。公用配置文件是用于消费者娱乐和相关的设备,例如手机、掌上电脑、机顶盒、游戏控制器等等。其用于最广泛的市场范围,包括支持带有各种性能的平台。空间占用最小化,纹理绘图的全功能3D良好的游戏平台可用于手机设备
安全高要求配置文件是用于将可靠性和可认证性作为主要约束条件的消费者和行业的应用程序。绝对最小化3D以确保安全认证用于航空电子设备和车载显示器
扩展性:
OpenGL ES执行可能包括添加新的特点到执行中的扩展性。一个OpenGL ES配置文件由两部分组成:一个全部OpenGL管线的子集和一些从一套OpenGL ES专业扩展性中提取至完整OpenGL规范的扩展功能。每个扩展性都会经过修剪,与指令子集匹配并添加到配置文件作为核心增加项或者配置文件扩展文件。核心增加项与配置文件扩展文件的区别在于指令和符号不包括在其名称到扩展后缀中。配置文件都扩展性被进一步分为要求(强制性的)和可选扩展性。要求扩展性必须作为符合执行的一部分进行,而可选扩展性的执行则取决于执行者的判断。
本地平台图像接口层- EGL:
OpenGL ES还包括一个普通平台接口层的规范,叫做EGL。这层是平台独立的,而且可以有选择性地被包括到厂商的OpenGL ES分布中。平台绑定也有一个关联符合性测试。或者,厂商可以选择定期他们自己的平台专有嵌入层。

参考资料:
http://blog.csdn.net/forest_world/article/details/53304218 Android平台OpenGL ES图像处理
http://blog.csdn.net/peng_weida/article/details/45200241 一个简单的OpenGL ES 3.0 示例 (Android NDK jni)

Android平台OpenGL ES图像处理(improving)相关推荐

  1. android平台opengl es读取纹理数据并保存图片

    在AR云渲染服务中,有时候需要把生成的纹理保存到图片来进行调试. 那就想办法看看存成图片,很多人说用glGetTexImage这个函数可以直接读取纹理的数据,但是我们用到了opengl es 32版本 ...

  2. android opengl图片,Android平台openGL ES实现全景图片

    全景又被称为3D实景,是一种新兴的富媒体技术,其与视频,声音,图片等传统的流媒体最大的区别是"可操作,可交互". 全景分为虚拟现实和3D实景两种.虚拟现实是利用maya等软件,制作 ...

  3. 适用于ios和android,适用于iOS和Android的OpenGL ES差异

    我有一个适用于iOS和 Android的OpenGL ES应用程序.大多数代码是很久以前由另一个人编写的,现在我必须维护它. OpenGL的使用看起来相当简单(游戏是2D,只使用纹理精灵以简单的方式) ...

  4. 安卓平台OpenGL ES的调用

    安卓平台OpenGL ES的调用 开发游戏如果直接使用OpenGL是比较痛苦的,最好的办法是使用封装好的引擎,但很有必要了解在安卓java代码直接调用OpenGL的渲染方法 固定渲染管线只可通过配置实 ...

  5. Android 硬件 OpenGL ES 模拟设计概述

    简介 Android 平台的 OpenGL ES 模拟由多个组件实现,它们是: 一些宿主机的 "翻译器" 库.它们实现了由 Khronos 定义的 EGL,GLES 1.1 和 G ...

  6. 【Qt for Android】OpenGL ES 绘制彩色立方体

    Qt 内置对OpenGL ES的支持.选用Qt进行OpenGL ES的开发是很方便的,很多辅助类都已经具备.从Qt 5.0開始添加了一个QWindow类,该类既能够使用OpenGL绘制3D图形,也能够 ...

  7. 【Android】OpenGL ES for Android 教程1 - HelloWorld

    本教程及后续教程全部参考或者转载于:OpenGL ES Tutorial for Android 本例相当于openGL的HelloWorld程序. 先贴代码,代码中的注释比较具体了. 主Activi ...

  8. Android中用OpenGL ES Tracer分析绘制过程

    Tracer for OpenGL ES(http://developer.android.com/tools/help/gltracer.html)是Android SDK中新增加的开发工具,可逐帧 ...

  9. opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。

    各位大侠好: 我在使用open gl es的做显示的时候,发现一个问题,请各位帮助一下,谢谢. 环境:opengl es 1.x,2D的模式显示纹理图片. 在LG-P990,HTC-C510E上显示附 ...

最新文章

  1. Python会消亡吗?
  2. WPF——微软的UI革命
  3. IDEA——使用JSONObject时报错
  4. kafka和mysql内存机制_一文五分钟让你彻底理解Kafka架构原理
  5. 高性能有限元计算服务器,结构有限元计算服务器配置
  6. VS2013+cuda8.0配置及案例
  7. 美国能限制linux内核,美国大学教授「故意」向 Linux 提交含 Bug 代码,内核管理员“封杀”明尼苏达大学...
  8. Matlab 获取主板、硬盘、CPU、BIOS和网卡序列号
  9. 互联网晚报 | 10月16日 星期六 | 搜狗正式并入腾讯;宏光MINIEV累计销量破40万台;神舟十三号载人飞船成功发射...
  10. html转word 图片格式,html转word处理图片 java
  11. 联想笔记本 插电源 拔电源 黑屏问题解决。
  12. 电脑提示Wtautoreg.exe无法找到入口怎么解决?
  13. MDS(多维尺度变换)
  14. APP和后端HTTP通信加密思路
  15. CTF-密码学-bacon
  16. html5绘制图形渐变-径向渐变
  17. Linux——从命令行配置网络、编辑网络配置文件
  18. Maple学习(一)Maple的安装
  19. UE5学习笔记(五)——地形及地表材质
  20. 隐藏安卓平板状态栏,还你全面屏体验

热门文章

  1. 成为一名程序员的开始
  2. dart和C语言计算CRC32结果不同
  3. Rancher 干什么用的
  4. 【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶
  5. linux下kegg注释软件,工具篇丨GO和KEGG富集不到通路?快试试这个超赞的功能分析工具吧...
  6. CPU四核八线程和四核四线程的区别
  7. JavaScript 科技推动进步
  8. 换内存条电脑蓝屏问题【已解决】
  9. Google Maps Download Tool 谷歌地图下载工具
  10. 叶公好龙——存在与逻辑