该原创文章首发于微信公众号:字节流动
相机基础滤镜
上文中我们通过 ImageReader 获取到 Camera2 预览的 YUV 数据,然后利用 OpenGLES 渲染实现相机预览,这一节将利用 GLSL (OpenGL 着色器语言)基于不同的着色器实现多种基础滤镜。
GLSL 一些使用频率比较高的内建函数
| 内建函数 | 函数说明 |
|---|---|
| float distance (genType p0, genType p1) | 计算向量 p0 ,p1 之间的距离 |
| float length (genType x) | 返回向量 x 的长度 |
| genType floor (genType x) | 返回小于等于 x 的最大整数值 |
| genType ceil (genType x) | 返回大于等于 x 的最小整数值 |
本文介绍如何在 Android NDK 中使用 OpenGLES 3.0 开发相机基础滤镜,包括动态网格、分屏和缩放的圆效果。通过 GLSL 着色器语言,结合内建函数实现滤镜的动态变化,如利用 mod 和 floor 函数调整动态网格,用 distance 函数控制圆的缩放。同时强调了在处理纹理坐标时,需转换为图片坐标系以避免椭圆绘制问题。
订阅专栏 解锁全文
6724





