首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用OpenGL实现圆角效果

在日常的各类App和网页中,圆角矩形的设计更是随处可见于各类头像、按钮等元素上 (图片来自参考1) 接下来的文章我们基于之前的播放器项目,添加OpenGL实现的圆角效果,最终效果如下图所示(播放器叠加了灰度滤镜和圆角滤镜...) 实现思路 矩形圆角的一种实现思路是按照设定的圆角半径在矩形四个角画圆,这样一个完整的圆角矩形拆解为四个角上四分之一圆+中间的十字形图形 先看看shader是如何绘制圆的:先将纹理坐标系转为图片原始的坐标系...,然后根据圆的数学公式判断即可 判断十字区域并进行绘制 四个角弧形区域 最终将两者结合并去掉hard code,圆角半径为50px的效果如下 代码实现 在librender模块中新建RadiusCornerFilter...类并添加Drawer实现 添加filter到RenderManager即可 参考 1.

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android OpenGL 实现“人像背景虚化”效果

    VideoMatting Demo:https://github.com/githubhaohao/AndroidVideoMatting 接下来,本文将教您如何利用人像分割和 OpenGL 的滤镜来实现人像背景虚化效果...照例先上效果图,OpenGL 实现的“人像背景虚化”效果 实现原理 “人像背景虚化”效果实现,首先获取到人像的 mask 图,然后基于这个 mask 图对人像进行保护,对背景做一些模糊(虚化)和一些高光的...“光斑”效果的实现参考我之前的文章:抖音、视频号流行的 Bokeh 效果是怎么实现的?...,可以使用 Blend 滤镜来验证一波: //Blend #version 300 es precision highp float; in vec2 v_texCoord; uniform sampler2D...: “光斑”看起来很不自然,没有虚化的感觉,接下来对图像先做模糊再做光斑的效果,看看融合起来效果如何。

    61611

    OpenGL 实现视频编辑中的转场效果

    那么如何在视频编辑软件中实现转场效果呢? 这里提供使用 OpenGL 实现视频转场的一个小示例,我们可以通过自定义 GLSL 来实现不同的转场效果。...这里以图片来替代视频 A、B 中解码出来的帧。 最终效果如下: ? 实现讲解 模拟视频渲染播放 模拟 fps 为 30 的视频,用 RxJava 每间隔 30 ms 就触发一次 OpenGL 渲染。...当然这些操作只是为了让这个小例子更加贴近真正的视频转场,重要的还是在于如何实现转场的 Shader 效果。 首先转场的时候要有两个纹理作为输入,那么肯定要定义两个 sampler2D 进行采样了。...在 Shader 中定义 progress 变量,代表转场的播放进度,进度为 0 ~ 1.0 之间。...以上就在关于使用 OpenGL 在视频编辑中实现转场效果的讲解,通过这篇文章希望大家可以掌握转场的基本实现原理。

    3K20

    Android OpenGL ES 实现动态(水波纹)涟漪效果

    模拟物理世界中的水波纹 最后观察出,物理世界中水波纹的特点如上图所示,从水面的正上方往下看,在凹面上方观察到的是缩小效果,而在凸面上方观察到的是放大效果,然后整个水波纹效果就是放大和缩小效果的交叉排列...水波纹效果原理如下图所示,我们以点击位置为中心,发生形变的区域是内圆和外圆之间的区域,以归一化时间变量 u_Time 大小为半径构建的圆(蓝色虚线)为边界,设定内侧是实现缩小效果的区域,外侧为实现放大效果的区域...我们设采样点到中心点的距离为 Distance ,然后计算 Distance-u_Time=diff 的值来判定,采样点是位于缩小区域(diff 0)。...2 水波纹效果实现 基于上节的原理分析,实现水波纹效果的主要原理就是实现一定区域内的缩小和放大效果,我们以平滑函数的输出值作为纹理采样坐标的偏移程度。...normalize(texCoord - touchXY);//单位方向向量 texCoord = texCoord + (unitDirectionVec * moveDis);//采样坐标偏移(实现放大和缩小效果

    2.3K20

    实现场景切换的时候淡入淡出的效果(Unity3D)

    然后在场景过渡的时候,加一个淡入淡出的效果,就很nice了。    今天就实现一个场景切换的时候淡入淡出的效果。...先看一下效果 二、参考文章 【unity3d 用RawImage组件实现场景淡入淡出】https://blog.csdn.net/qq_34593121/article/details/82107113...【Unity 实现背景图片淡入淡出】https://blog.csdn.net/liuyanlei1990/article/details/72853307 【Unity 启动画面淡入淡出】https...://www.cnblogs.com/wuzhang/p/wuzhang20150524.html 【浅谈Unity淡入淡出的效果的实现】https://www.cnblogs.com/MoRanQianXiao.../p/7691790.html 三、实现过程 1、搭建场景 新建一个RawImage 2、编写脚本 FadeInOut.cs using UnityEngine; using UnityEngine.UI

    1.7K30

    新手学习FFmpeg - 调用API编写实现多次淡入淡出效果的滤镜

    目标 fade是一个淡入淡出的滤镜,可以通过参数设置fade type(in表示淡入, out表示淡出),在视频的头部和尾部添加淡入淡出效果。 在使用过程中,fade有一些使用限制。...如果想一次实现多个fade效果,那么就要通过-filter-complex来组合多个fade,并合理安排调用顺序,稍显麻烦。 这次,ifade就尝试支持在同一个视频中实现多次fade效果。...ifade计划完成的目标是: 一次支持设置一个类型(淡入/淡出) 一次支持设置多个fade时间点 支持fade时长 分析 先看看原版fade是如何实现的。...三种状态: VF_FADE_WAITING 待渲染, 初始状态 VF_FADE_FADING 渲染中 VF_FADE_DO 渲染结束 变量因子: factor 控制效果强度 假设现在设置的是淡入效果(如果是淡出效果...可以看出ifade就是利用s->fade_status重复利用现有的处理逻辑来实现多次淡入的效果。 实现 上面分析完之后,就可以动手写代码了。 具体代码就不贴出来了,可以直接看源码。

    1.9K30

    Canvas如何实现滤镜效果

    --《功能》 图片滤镜 滤镜,主要是用来实现图像的各种特殊效果。 用过photoshop或者美颜相机,我们都知道滤镜可以帮助我们把图片修缮的更加完美。 那么,作为前端开发人员,如何实现一套滤镜效果呢?...但实际,我们可以通过直接操作ImageData对象来修改像素数据,从而实现各种我们想要的效果。...grayscale(); default: return original(); } }); } 原图 灰度 类似的,我们可以实现各种滤镜效果...从canvas来讲,可以通过修改canvas中的图片像素数据来实现各种滤镜效果,但是需要我们自己去修改像素值,自己去查各种算法。...而css相反,我们可以直接使用css的filter来设置各种效果,因为它已经内置了很多滤镜效果。 总结 像素操作需要注意的是,像素点是每四个一组,分别代表:R,G,B,A。

    1.2K20

    Android OpenGL ES 实现 3D 阿凡达效果

    3D 效果的壁纸 本文实现的效果 偶然间,看到技术交流群里的一位同学在做类似于上图所示的 3D 效果壁纸,乍一看效果确实挺惊艳的。...当时看到素材之后,马上就萌生了一个想法:利用 OpenGL 做一个能与之媲美的 3D 效果。...1 3D 效果实现原理 毫无疑问,这种 3D 效果选择使用 OpenGL 实现是再合适不过了,当然 Vulkan 也挺香的。...通过观察上图 3D 壁纸的效果,罗列一下我们可能要用到的技术点: 纹理映射; 图像坐标变换,坐标系统矩阵变换实现图像的位移和缩放; 监听手机传感器数据,利用传感器数据控制图像位移。...手机晃动状态下的效果 手机静止状态下的效果 实现代码路径见阅读原文末。

    3.8K1913
    领券