位置: 编程技术 - 正文

【Cocos2d-x】图片描边的一种比较好的shader实现方法(cocos2d官网)

编辑:rootadmin

推荐整理分享【Cocos2d-x】图片描边的一种比较好的shader实现方法(cocos2d官网),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2d怎么用,cocos2dx视频教程,cocos2d-x教程,cocos 2d x,cocos2dx官方教程,cocos2dx 图集,cocos2dx 图集,cocos 2d x,内容如对您有帮助,希望把文章链接给更多的朋友!

图片描边需求如下:

1. 可指定描边宽度 2. 可指定描边颜色3. 可用于字体

图片描边我所知道的方式有以下几种:

1. Cocos2d-x 3.x中,字体用FreeType库,字体描边可以用FreeType自带的描边功能,实际效果没测过,但只能用于字体。

2. 用RenderTexture,方法大概是把原图做一圈的偏移,渲染到同一张纹理上,他们相隔中心点的距离都是r,最后再把自己渲染到中间,核心代码大概这样:

这种方法可以作为一个比较好的解决方案,但是我认为这种方式在生成描边图片时,需要绘制多个图片,效率不是很好。

3. Cocos2d-x 3.x的ShaderTest有个描边的例子,是用shader实现的,不过那个程序有些不友好:描边宽度不是传像素进去,而是一个0~1的数字,是一个比例,就是说大的图片描边大,小的图片描边小,而且同一个图片不同位置的描边也宽窄不一(这在长比宽大很多的图片尤其明显),而且描边的颜色也深浅不一。

以下我分享一种我认为比较好的描边算法:

在片段着色器里面,对于每个像素:1. 如果它是不透明的像素,则不管,维持原本颜色;2. 如果透明,是度判断它四周有没有不透明的像素,如果有,则把它设成描边颜色,否则保持透明。

我为代码加了比较详细的注释,希望大家能理解

【Cocos2d-x】图片描边的一种比较好的shader实现方法(cocos2d官网)

stroke.fsh:描边片段着色器

我的utilShader.cpp:

调用的地方:

效果:

效果还算是比较好的,经测试,此算法在安卓多个机型上也表现良好。

这样一套完整的描边算法就完成了,如果描述有不当之处,或有更优方法,欢迎吐槽。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

谢谢complex_ok的吐槽,应该预先计算好sin和cos&#;,无需每次计算。优化后的 stroke.fsh 如下:

本帖地址:

glViewport()函数和glOrtho()函数的理解 在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho。glOrtho是创建一个正交平行的视景体。一般用于物体不会因为离屏幕的远近而产生大小的变

【Cocos2d-x】shader语法注意事项 1.不要用隐式类型转换例子1:inti=5;//没问题floatr=i*0.;//有问题例子2:floata=0;//定义和赋值float不能不加.0以上两个例子在OpenGL上没任何问题,但在移动端

OpenGL Framebuffer Object (FBO) 在OpenGL中,OpenGLContext有一个默认的FBO用来绘制图像,但是我们也可以创建新的用户定义的Framebuffers,这样我们可以绘制到自定义的framebuffer,而不会影响到

标签: cocos2d官网

本文链接地址:https://www.jiuchutong.com/biancheng/373062.html 转载请保留说明!

上一篇:UIView基类的简述(uiview继承哪个类)

下一篇:glViewport()函数和glOrtho()函数的理解(glortho函数)

  • 小规模纳税人单张发票最大金额
  • 车险车船税会计分录
  • 印花税的会计分录有哪些
  • 计提企业所得税分录
  • 购买金税盘维护费会计分录
  • 汇算清缴企业所得税弥补亏损明细表怎么填
  • 发票没有纳税人识别号能开吗
  • 付给非公司员工提成可以走委托代销商品吗
  • 申报个税大病医疗如何申报
  • 委托境外研发费用不超过境内符合条件的研发费用
  • 产品检验费怎样做账?
  • 应付职工薪酬的一级科目
  • 建筑公司对外如何开票
  • 跨地区经营怎么交税
  • 收到差额纳税的发票进项税能抵扣吗
  • 堤围费是什么意思
  • 小型微利企业所得税优惠政策2022
  • 发票增值税是多少个点
  • 收到保险返利计入什么
  • 附加税减半征收政策是哪个文件
  • 小规模纳税人减免税明细表怎么填
  • 付款凭证会计分录怎么写
  • 对公直接转私人卡会怎么样
  • 应交税费的借方表示什么
  • 仪器购买税率
  • 无形资产和长期待摊费用思维导图
  • 物业费按年收取的规定
  • 资产负债表与现金流量表的关系
  • PHP:time_nanosleep()的用法_misc函数
  • 上月抵扣的发票怎么开
  • ros source
  • 单反镜头直径越大是不是就越好
  • debian配置
  • php单例模式例子
  • 赊销分期付款
  • 未分配利润怎么清零
  • 增值税加计抵减申报表怎么填
  • php编程计算日期怎么算
  • 详解 HttpServletResponse
  • php new
  • php返回上一级
  • 供热企业税收优惠
  • 物权转移的几种情形
  • 织梦使用手册
  • mongodb 分组计数
  • 租入的房屋转租是否交房产税
  • 厂房办公用品费用怎么算
  • 金蝶固定资产累计折旧凭证生成
  • 什么是指社会保障完全靠当前的收入
  • 基本户是活期还是定期
  • 固定资产累计折旧计算公式
  • 固定资产清理时增值税怎么处理
  • 发票开错抬头做红字发票的账务处理是?
  • 收到工会经费如何处理
  • 开票收入摘要怎么写
  • 委托加工物资核算
  • 购入不需要安装的固定资产会计科目
  • 当月只有进项税额会计怎么做账
  • 主营业务税金及附加借贷方向
  • 基本户打款个人怎么办
  • 苗木种植发票免税怎么开
  • 预缴税款的会计处理
  • 银行存款日记账电子表格模板
  • windows故障
  • 如何清理注册表文件
  • ubuntu的终端在哪
  • Win10系统如何利用360压缩软件解决打不开RAR压缩包的问题
  • 时间服务器ip 端口
  • jquery-file-upload 文件上传带进度条效果
  • dos命令批处理
  • shell 四则运算
  • shape form的区别
  • gridlayout用法
  • js混杂模式
  • android studio常用控件
  • android天气预报课程设计报告
  • 青岛税务局局长是什么级别?
  • 虚假新闻造成的真实伤害
  • 请问地税是省直单位吗
  • 苹果官网手机号码无效
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设