位置: 编程技术 - 正文

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

  • 生产企业进项税加计扣除
  • 财务报表没报会影响出口退税吗为什么
  • 固定资产处置损益科目编码
  • 免征增值税还要交印花税么
  • 子公司的实收资本合并报表怎么做
  • 应税消费品的税目有哪些
  • 房地产自有资金投入
  • 分公司怎么做
  • 固定资产年数总额法
  • 持有至到期投资科目被取消了吗
  • 租赁算投资吗
  • 采购商品未入库的会计分录
  • 销售货物的价外费用有哪些
  • 企业自建房屋建几层合适
  • 退回以前年度费用怎么做帐
  • 核定征收怎么交企业所得税
  • 印花税 企业
  • 增值税专用发票验票
  • 如何区分劳务派遣和劳动合同
  • 现金流量表中现金流量净额怎么算
  • 成本费用调整法
  • 企业所得税汇算清缴网上申报流程
  • 应收票据贴现的会计分录
  • 外聘人才一次性工资费用入账什么分录?
  • 投资合伙企业对公司有债务责任吗
  • 公司注销 缴税
  • 生产车间工资计入什么费用科目
  • 更新出现网络异常
  • PHP:mb_convert_case()的用法_mbstring函数
  • 报税时漏报进项怎么办
  • 哪些收入需要交消费税
  • 非合理损耗会计分录
  • 投资性房地产期末公允价值大于账面价值
  • vantUI van-picker中的column使用,picker选择器展示对象数组里面的属性,自定义展示数据
  • 异地银行结算账户的特点
  • 马纳斯古盐田气候特征
  • 月末结转本年利润吗
  • sta翻译中文
  • 2023年highway-env更新之后的使用记录(含DDQN,DuelingDQN,DDQN+OtherChanges) 入门到入土,再踩坑就不玩原神了
  • php批量删除文件
  • 材料明细帐
  • 帝国cms模板文件在哪
  • php使用while循环计算1到100的和
  • 一般纳税人购进免税农产品如何抵扣进项税额
  • mongodb管道操作符
  • 标准工资表怎么填
  • 建筑附加税税率
  • 企业增值税包含哪些税项及税率
  • 所得税费用需要结转损益吗
  • 销售退回如何做账务处理
  • 进项留底是什么科目
  • 公司一年发两次奖金
  • 转出未交增值税最终怎么转平
  • 流动资产周转率和总资产周转率
  • 以前年度多计提成本怎么处理
  • 写字楼物业费按照什么面积
  • 记账凭证账务处理程序的特点是直接根据每张
  • 不属于投资性房地产项目有自用房地产作为存货的
  • 工程与会计
  • 工程行业收到工程发票
  • 财务专用章的效力
  • 没有发票的费用怎么做凭证
  • 在mysql中使用什么语句来查询数据
  • 创建mysql表sql语句
  • js操作剪切板
  • fedora linux安装教程
  • win10怎么设置允许远程
  • dotnetfx35有什么用
  • Linux中环境变量的用法
  • win7系统打开服务
  • win7系统如何修改默认浏览器
  • python rgb转cmyk
  • unity 接入sdk
  • unity3d导出fbx文件
  • 自定义progressbar
  • python获取文件内所有函数
  • python文件遍历
  • android模拟器无法运行
  • 履职提醒函与督办函区别
  • 申请电子发票需要盖章吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设