位置: 编程技术 - 正文

【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函数)

  • 2023年印花税税率口诀
  • 无法收回的应收账款可以税前扣除吗
  • 价外费用含税吗
  • 关税完税价格计算消费税公式
  • 综合保税区内企业
  • 税金及附加现金流指定
  • 公司取现需要带什么东西
  • 佣金可以入账吗
  • 存放中央银行款项名词解释
  • 煤炭企业会计核算办法
  • 个人所得税办理退税需要什么资料和手续
  • 购销商品分类核算方法有
  • 固定资产折旧摊销表A105080
  • 存货可变现净值与成本孰低 考虑销量吗
  • 转让无形资产收入属于销售收入吗
  • 资产损失类型有哪些
  • 税负的含义
  • 公司账户转个人账户用途怎么写
  • 增值税专用发票开错了咋办
  • 运输发票抵税多少个点
  • 会计报表上总资产怎么填
  • 收到股东交的多余的股金怎么做账务处理
  • 核销单丢失后应该怎么挂失和补录处理呢?
  • 差额税和增值税怎么算
  • 应收及预付款项包括( )
  • window10拖动窗口的手势
  • 在线测网速准吗
  • 滴滴代驾报酬
  • 如何配置环境变量windows
  • 软件登记费用
  • win11预览版体验
  • 长期股权投资引入新投资者账务处理
  • 利息年化率怎么算化利率怎么算
  • 营改增后企业一般纳税人认定标准为
  • 其它应收款的内容
  • 存货核算方法可以变更吗
  • 微信小程序计算器代码
  • php的header函数
  • 成本价低于现价 应该卖吗
  • 职工教育经费的计提比例是多少
  • 科目汇总表借方发生额为零怎么填
  • 电脑学word下哪个软件视频
  • 企业所得税实施条例第七条
  • 游戏公司的主营业务是什么
  • python如何合并字典
  • 教育经费什么情况下可以报销
  • PHP MongoDB GridFS 存储文件的方法详解
  • php如何判断是移动还是pc
  • 普通发票被作废了还能报销吗
  • 未发工资怎么办
  • MYSQL的数据类型共有几大类?
  • 给离退休人员发放以前年度在岗奖金需要计提工会经费吗
  • 生产成本如何结转
  • 社保和公积金个人和单位缴纳比例
  • 一般纳税人季报还是月报
  • 补计提所得税怎么做分录
  • 长期股权投资收回账务处理
  • 转让证券需要交增值税吗
  • 坏账准备计提标准
  • 进项税额转出忘记结转
  • 主营业务毛利率和毛利率
  • 加盟创业成功案例分析
  • 数据转换常见策略
  • Windows Server 2008下的网络排错
  • centos直接安装
  • fedora7
  • ubuntu系统中怎么重启proftpd程序
  • diskgenius分区linux
  • win7系统莫名其妙占用个D盘
  • ubuntu nodejs
  • 字符串中指定字符变换
  • python序列结构总结
  • 简单阐述javascript的主要作用
  • js中的面向对象
  • jquery图片
  • 鉴证服务是指什么
  • 云税票管家是什么软件
  • 超豪华小汽车需要交什么税
  • 江之都财税服务集团有限公司是私企吗
  • 昆明市地方税务局稽查局局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设