前言

大家会发现使用iPhone拍照时候有一个使用频率不是特别高的一个功能——系统自带滤镜,平时拍照拍了就到美图软件美美,最近实习单位(多媒体技术公司)有个需求就是做一个这样的效果,为了全平台通吃采用OpenGL ES开发。

看标题可能还不知道我所描述的九宫格是什么,下面大家可以看一下这张截图:

iOS相机app自带九宫格滤镜

对于性能的要求,达到iPhone切换滤镜的缩放效果,过度动画流畅。

思路

OpenGL ES进行开发,那么每个滤镜是一个矩形,先通过三角图元绘制矩形,通过texture纹理贴图,采集摄像头数据,将每一帧以贴图形式贴到创建的矩形上,但是要如何实现9个滤镜呢?因为后期会加入公司自己的滤镜效果,参考了一些代码,使用viewport(视口),每次刷画面的时候创建九个视口,每个视口的矩形以OpenGL坐标定位(-1,1),(1,1),(-1,-1),(1,-1)。这样每次摄像头数据进来,glview刷新就会实时显示九宫格视频。

切换动画

对于动画,其事就是将变化过程每一帧刷到屏幕,公司工程封装了一个Timg调用这个函数可以实现回调刷新屏幕(应该是与cadisplaylink有关),我设置了一个scale值,每次刷屏幕的时候这个Scale会变化,从0-1或者从1-0,如果是缓进缓出,也就是开始做加速运动中间匀速运动结束减速运动,通过Scale值体现。

切换动画根据视口位置不同而做不同的几个坐标变化,举个例子:中间的视口在向四方拉伸,周围八块在拉伸过程中也要对原点进行变化,变化量为变化所需的总变化量*Scale。

触摸响应

对设备屏幕进行监听,根据整个glview的大小进行判断触摸点在哪个视口,获取触点xy坐标,判断落在的区域,触发相对应视口的变化函数。

效果

九宫格效果

实现iOS系统相机九宫格滤镜的思路相关推荐

  1. unity ios系统相机相册 IOS16 自动横屏

    应用本身只支持竖屏,并且关闭了自动旋转 更新到ios16后,调用系统相册弹出后,由竖屏自动变成了横屏,调用相机也会切换横屏,并且按钮都不见了无法返回只能退出app. 解决: self.ImagePic ...

  2. IOS开发调用系统相机和打开闪光灯

    IOS开发调用系统相机和打开闪光灯      今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的.IOS有两种的拍照和视频的方式:1.直接使用 ...

  3. unityios相册_Unity与IOS进行交互,调用IOS系统的相机和相册

    前两篇文章总结了Unity与Android之间的简单交互以及Android系统相机和相册的使用. 更痛苦的是,后来发现在不同的测试机器上会有不同的错误. . . 下一阶段应该一步一步解决 总结当今与I ...

  4. ios 调用系统相机为英文时的更改

    使用UIImagePickerViewController调用系统相机,当系统相机按钮为英文时. 在 info.plist 中添加 Localization native development re ...

  5. IOS系统历届版本大回顾(iOS7)

    APPLE,一种常见的水果,但在人类的进化史上扮演了2次拯救世界的角色. 第一次是在1666年一个夏末的傍晚,在英格兰林肯郡的乌尔斯索普,当一个年轻人坐在树下,埋头读书的时候,一个苹果奋力挣脱了树枝的 ...

  6. ios系统可以用谷歌服务器吗,Android若是在国内能用谷歌服务,就会超越苹果iOS...

    原标题:Android若是在国内能用谷歌服务,就会超越苹果iOS 作为一枚资深的手机发烧友,笔者用过的Nexus手机不在少数,最近入手的LG Nexus 5X之后,并没有笔者想象中的流畅.Androi ...

  7. 深入了解ios系统机制

    1.什么叫ios?        ios一般指ios(Apple公司的移动操作系统) .        苹果iOS是由苹果公司开发的移动操作系统.苹果公司最早于2007年1月9日的Macworld大会 ...

  8. ios 边录音边放_关于Android和iOS系统OneNote支持边录音边记笔记的需求和建议

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 请问Android和iOS系统的OneNote什么时候能像Windows10系统里一样,支持边录音边记笔记.录音完毕后点击笔记时,能自动定位到相应的录音时 ...

  9. 深入iOS系统底层之CPU寄存器介绍

    一弹指六十刹那,一刹那九百生灭. --<仁王经> 组件 计算机是一种数据处理设备,它由CPU和内存以及外部设备组成.CPU负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间 ...

最新文章

  1. CSP认证201312-2 ISBN号码[C++题解]:简单题
  2. linux长期版本维护内容,[图]Linux Kernel 4.20首个维护版本更新发布 已稳定可广泛部署...
  3. 【交互】Omkar and the Meaning of Life(CF-1586D)
  4. AT指令联网---以鸿蒙开发板为例
  5. 蓝桥杯 基础练习 特殊回文数
  6. ActionItemBadge:在actionbar上显示badge数字提示
  7. 一文看尽预训练语言模型
  8. 【程序源代码】万岳在线教育系统WEB开源版
  9. SpreadJS使用小结
  10. 给 Android 开发者的 Kotlin 教程(一)
  11. html轮播图背景色,轮播图的做法(更换背景颜色)
  12. 双ESP分区的WinPE本地安装
  13. vue 项目 build 之后dist文件下的index.html不显示内容,并且报 Failed to load resource: net::ERR_FILE_NOT_FOUND 错误
  14. 反客为主?00 后大学生 “反向背调” 雇主,Z 世代要重塑职场
  15. Android自定义控件——模拟抛体加速减速效果
  16. 将两个android项目整合,并在父项目中使用子项目的功能
  17. 视频人像分割算法—C++推理(视频抠图 图片抠图)
  18. 数据结构与算法-C版(王卓)day01
  19. 如何进行移动端的页面开发?
  20. php sae,GitHub - ytf606/sae-weiphp: 基于SAE平台weiphp CMS系统

热门文章

  1. 1000瓶有毒的水,用多少只老鼠可以试出有毒的那瓶
  2. A block IDR(s) method for nonsymmetric linear systems with multiple right-hand sides
  3. OSG学习:OSG组成(二)——渲染状态和纹理映射
  4. JPBC部分API说明
  5. 医疗险十大常见误区,你中了几个?
  6. 惠普HP LaserJet Enterprise M4555 MFP 驱动
  7. 3D游戏开发所需的数学基础——矩阵
  8. 【物联网】思科借助物联网推进工业解决方案全数字化进程
  9. fontTools库来检测字体文件中是否包含某字符
  10. 向技术大牛进击!!——计算机编程进修动员大会