【已解决】今天把ShatterSprite(碎裂效果)做了3.0版本的适配,已经能用了,但是还有些问题

感谢4L高手的建议,已经修复了。
修改方法:
把ONDRAW函数中的 glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_UNSIGNED_BYTE, GL_FALSE, 0, colorArray);这句话中的GL_FALSE改成GL_TRUE就好了。

附件里的内容我没改,有需要的兄弟自己改一下吧!

再次感谢4L层主!!!!

===============我是阉割线==========================

啊哈,学习COCOS2D-X也有3,4天了,摸索中学习,学习中摸索。

我很喜欢这个玻璃碎裂效果,可惜能找到的版本全都是2.X的或者是COCOS2D的,所以就抽了一个晚上来做3.0适配(勿喷啊,本人真的还是小小白)

现在的情况是已经可以使用了,碎裂也可以,但是唯独碎片都是白色的,但是按这个代码的意思来看,碎片应该都是属于自己设定的Sprite的部分(说白了就是一个Sprite给碎成一块一块的)。

我把代码传上来,求高手帮忙看看,感激不尽。

PS.我在逛论坛时发现有的同学还不知道如何在3.0版本重载DRAW()函数,那你可以参考一下我这个,应该是可以的。

主,贴个效果图看看呗。

借用了原作者的图

做的挺不错的。

估计是opengl 绘图的时候 都绘成白色了, 建议楼主绘制的时候 不要传递颜色数组 试试

谢谢4L层主建议!!!!!!!!我已经弄好了!!!!!!!.

把ONDRAW函数中的 glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_UNSIGNED_BYTE, GL_FALSE, 0, colorArray);这句话中的GL_FALSE改成GL_TRUE就好了。

这个ONDRAW函数我是从DRAWNODE里面弄过来的,可能这两种情况不太相似吧。

再次感谢4L层主!!!!

楼主怎么用的 为啥我的没效果

敢问如何使用呢?

在你的SCENE里面加这个

CCSprite *can = CCSprite::spriteWithFile(“Icon.png”);
int piecesX = 8;
int piecesY = 8;
float speedVar = 20.0;
float rotVar = 0.2;
bool radial = true;

ShatteredSprite *shatter =ShatteredSprite::shatterWithSprite(CCSprite::spriteWithTexture(can->getTexture()),
                                                             piecesX,
                                                             piecesY,
                                                             speedVar,
                                                             rotVar,
                                                             radial);
addChild(shatter);
shatter->setPosition(ccp(CCRANDOM_0_1() * 480, CCRANDOM_0_1() * 320));
shatter->setcc_subShatterPercent(100);

看7楼~我贴了代码

恩,谢谢了

mark 感谢分享:14:

这个东西真的能用么…为什么我的什么都显示不出来

楼主,我这边导入代码后,会出现,
无法识别标识符 Mat4

以及在ondraw方法里 找不到函数 getGLProgram()

楼主附件是未适配3.0的版本的代码吗?
我用的是cocos2dx3.0

我这里用的3.1RC,肯定是适配了的,因为ONDRAW这种写法是从3.X才开始的,如果是2.X的话DRAW函数直接重载就可以

我这里是没问题的。。你再看看,或者把问题贴出来我试试看能否帮你解决

为什么我用这个播放碎裂时, 图片碎裂开始开始位置一直在坐标(0,0)的位置呢?

收藏下 慢慢研究 牛人真多啊

楼主可以单独说说 3.0里面ondraw 的作用吗? 我Node 重写了draw函数,可是无论怎么样,都会被背景挡住,就算把背景优先级设置-1,还是会挡住要draw的东西。。。求解

我的也是同样的提示。找到是什么原因了么?