在 cocos2d-x 3.x中使用shader实现精灵色相(Hue)的修改

为cocos2d 的精灵修改色相(Hue)的问题困扰了我很久,网上一直没有找到比较靠谱的解决方案。
前段时间在https://github.com/alex314/CCSpriteWithHue发现国外开发者在 cocos2d-iPhone 2.x版本上面实现了对精灵的色相修改,最近有时间在cocos2d-x 3.x 上重新实现了一下。
实现的效果如下:
原图:

色相修改:


把关键代码分享给大家:

CCSpriteWithHue.zip (4 KB)

注意:Debug模式下,需要注释掉 CCGLProgramState.cpp apply() 方法中 switch语句default分支下的断言

//                CCASSERT(false, "Invalid UniformValue");

调用方法如下:

CSpriteWithHue *sprite = CCSpriteWithHue::create("HelloWorld.png");
sprite->setHue(4.6);//值在 0 ~ 2 Pi 之间

学习了!这本来应该是一个很基本的功能,不知道为什么cocos2dx没做

很不错。可以节省不少资源,mark下

好贴~点赞~:7:

赞 非常棒!

亲测 有点问题,坐标和anchrou都是错的 cocos v3.5

貌似有问题用不了

这个之前就有人弄好了呀,而且3.5不是自带 shader了么

openGL error 0502

你这个error困扰了我很久

额。卧槽。没发现这边已经有了。。。我还改了一次。。。