前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用OpenGL实现圆角效果

使用OpenGL实现圆角效果

作者头像
雪月清
发布2023-08-31 20:09:58
1.2K0
发布2023-08-31 20:09:58
举报
文章被收录于专栏:雪月清的随笔

圆角因为其平滑的四边而容易将用户的视线过渡到图形中心,直角矩形因为尖锐的特性导致人眼在图形识别上容易发散

(图片来自参考1)

因此,圆角更容易获得设计师的青睐。在日常的各类App和网页中,圆角矩形的设计更是随处可见于各类头像、按钮等元素上

(图片来自参考1)

接下来的文章我们基于之前的播放器项目,添加OpenGL实现的圆角效果,最终效果如下图所示(播放器叠加了灰度滤镜和圆角滤镜)

实现思路

矩形圆角的一种实现思路是按照设定的圆角半径在矩形四个角画圆,这样一个完整的圆角矩形拆解为四个角上四分之一圆+中间的十字形图形

先看看shader是如何绘制圆的:先将纹理坐标系转为图片原始的坐标系,然后根据圆的数学公式判断即可

判断十字区域并进行绘制

四个角弧形区域

最终将两者结合并去掉hard code,圆角半径为50px的效果如下

代码实现

在librender模块中新建RadiusCornerFilter类并添加Drawer实现

添加filter到RenderManager即可

参考

1.【你对圆角的所有困惑,这里都帮你解答了】

https://www.woshipm.com/pd/4241302.html

完整代码可以点击文末的"阅读原文"获取,欢迎各位大佬提issue和PR

~~END~~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雪月清的随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档