关于cocos2dx添加边缘外发光,光线被裁剪的问题探究(四)

博客探讨了cocos2dx中使用shader实现边缘外发光时遇到的图集处理和空白像素裁剪问题。作者指出当前算法仅支持单张图片,并解释了如何处理图集纹理坐标及空白像素裁剪导致的偏移问题。解决方案包括在C++源码中修改顶点坐标或在顶点shader内进行坐标转换。文章以提供修正后的shader代码片段结束。
摘要由CSDN通过智能技术生成

上面三篇基本把这个扩大纹理显示区域的问题解决了,但是又发现一个问题。

这个问题是这个算法目前只支持单张图片,对于图集这个目前是有问题的,这就是之前要把min_textoord和max_textoord传进shader的原因。

因为对于图集来说那个CC_Texture0是那个大图,所以对于单个SpriteFrame,他处理的所有的纹理坐标就不是(0,0)到(1,1)了,比如下面:

整张图集是最外边的框,里面有A和B两个单张图片,A的纹理坐标是(0.15,0.15)到(0.5,0.5),B的纹理坐标是(0.75,0.15)到(0.9,0.5)

对于A来说,他处理的纹理坐标就不是(0-1),所以需要把他的最小纹理坐标和最大纹理坐标传入到shader中。

还有一个问题是如果单张纹理图片周边带有空白像素,同时图集设置自动裁切掉周边的空白,那么就会有偏移的问题,目前还没解决这个问题,后面持续更新,有大牛知道解决方案,评论我,验证正确会修改。

至此完成,后面的外发光那些算法,本文不涉及,完结撒花。

 

关于上面的问题发现之前写的顶点shader有BUG,因为CPU传进顶点shader的坐标已经做过MV矩阵运算了,这时候再在世界坐标系下平移和缩放是有问题的。

解决方案有两个,一个是直接在C+

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值