位置: 编程技术 - 正文

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

  • 递延所得税资产怎么计算
  • 城建税的征税范围不包括农村对不对
  • 在外地预缴的印花税如何扣除
  • 代垫水电费增值税
  • 网银数字证书年费计入什么科目
  • 增值税发票税控开票软件怎么下载
  • 公司用的摄像头
  • 处置固定资产产生的净损失
  • 企业收到的政府补贴交所得税吗
  • 小企业以前年度损益调整科目编码
  • 以前年度资产损失的追补什么意思
  • 以物抵债计税依据
  • 建筑业统一发票税率多少
  • 现金支票提取现金备用
  • 小规模纳税人开专票和普票的区别
  • 销售货物或者提供应税劳务、服务清单怎么开
  • 按折现率计算现值
  • 小规模纳税人核定标准
  • 污泥处置中心所得税优惠政策
  • 自收自支事业单位
  • 制造业领用材料规章制度的好处
  • 上市公司企业股东转让股份交什么税费
  • 讲课费税务发票类别
  • 公司低价处理旧汽车涉税账务处理
  • windows无法连接到打印机指定的网络名不再可用
  • 设计费和勘察费的会计科目
  • 企业合并的增值税处理
  • centos7安装php7.3
  • win10系统电脑怎么连接wifi
  • 排污费计入应交税费吗
  • PHP简单实现HTTP和HTTPS跨域共享session解决办法
  • 二手房房屋买卖注意哪些问题
  • 'The Wave' sandstone formation in Coyote Buttes North, Paria Canyon-Vermilion Cliffs National Monument, Arizona (© Dennis Frates/Alamy)
  • 防止盗链的php代码
  • 公司出租房屋如何给对方单位开发票
  • 公司清算的补偿方案是不是应该公布了
  • 杜拉通河谷中的Nuestra Señora de la Hoz老修道院,西班牙塞哥维亚 (© Arco Images GmbH/Alamy)
  • 税务新政策解读
  • 备发工资的会计科目
  • yolov5 anchors 中 K-means聚类
  • idea如何导入sql文件
  • 狗能看懂的电视
  • 应付账款转入营业外收入会计分录
  • 直接人工不包括哪些
  • 公司食堂的费用分录
  • 基于python语言
  • 小规模纳税人增值税专用发票税率
  • 小企业长期债券投资入账价值
  • 确认销售收入时不影响应收账款入账金额的是
  • 公司购买床垫如何做账
  • 给投资人的利润属于什么科目
  • 改制基准日对人员的影响
  • mysql详细教程
  • ubuntu系统怎么更新
  • centos 怎么用
  • win7命令提示符
  • Ubuntu keylin 14.04 怎么使用root用户登录?
  • centos文件备份
  • win7系统打开网络看不到其他电脑
  • xp系统访问局域网
  • ubuntu20怎么连接蓝牙鼠标
  • pdv是什么格式文件
  • win10以太网属性为空白怎么办
  • cocos2d怎么用
  • ES6 javascript的异步操作实例详解
  • javascript中cookie
  • php监控源码
  • 只用html和css
  • 安卓编程视频教程
  • android教学
  • 如何判断安卓手机
  • javascript面向对象 第三方类库
  • bootstrap要学多久
  • python程序解读举例
  • substrate框架原理
  • 湖北省税务系统欠税管理工作指南
  • 收购发票怎么抵扣申报
  • 运输专票怎么开发票
  • 贵阳市税务局基本情况
  • 南通开发区地图高清版
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设