getShaderProgram()
场景:cocos2d-x 晋级2.0以后报错 Assertion failed: (getShaderProgram()), function draw
cocos2d-x 升级2.0以后报错 Assertion failed: (getShaderProgram()), function draw,
最近尝试着把我们以前用cocos2d-x 1.x写的代码升级到2.x,改动挺大,大部分创建代码都改成create了,一顿查找替换以后,亲幸的是大部分代码都ok,不过遇到一个这样的错误,找了我好久:
cocos2d-x 升级2.0以后报错 Assertion failed: (getShaderProgram()), function draw,
最近尝试着把我们以前用cocos2d-x 1.x写的代码升级到2.x,改动挺大,大部分创建代码都改成create了,一顿查找替换以后,亲幸的是大部分代码都ok,不过遇到一个这样的错误,找了我好久:
Assertion failed: (getShaderProgram()), function draw, file /Users/limin/backup/point21/trunk/blackjackIos/blackjack/libs/cocos2dx/sprite_nodes/CCSprite.cpp, line 579.
出现这个的原因是我们有一个类继承了CCSprite,但是本身没有texture,只是用来管理一堆子的ccsprite,自己写的初始化代码
bool TOSelfHeadBox::init(FMGameUser* user){
initData(user);
return true;
}
TOSelfHeadBox* TOSelfHeadBox::initSelfHeadBox(FMGameUser* user){
TOSelfHeadBox *pRet = new TOSelfHeadBox();
if (pRet && pRet->init(user)){
pRet->autorelease();
return pRet;
}
CC_SAFE_DELETE(pRet);
return NULL;
}
报错是shader没有指定,后来研究了半天CCSprite的代码,找到解决方案,init里面增加如下代码:
bool TOSelfHeadBox::init(FMGameUser* user){
if(!initWithTexture(NULL, CCRectZero)){
return false;
}
initData(user);
return true;
}
问题解决,给初始化一个空的texture