cocos2dx 3.8.1版本中
sprite可以实现变色操作
ImageView的只能通过修改底层来变色
GLProgram *program1 = GLProgramCache::getInstance()->getGLProgram(GLProgram::SHADER_NAME_POSITION_GRAYSCALE);
GLProgram *program2 = GLProgramCache::getInstance()->getGLProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP);
Sprite* sp = Sprite::create("res/score_bg.png");
// 下面两种方法 其实是一样的
sp->setGLProgram(program1);
//sp->setGLProgramState(GLProgramState::getOrCreateWithGLProgramName(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP));
sp->setPosition(240, 200);
addChild(sp);
ImageView* image = ImageView::create();
image->setPosition(ccp(240, 400));
image->loadTexture("res/score_bg.png");
Scale9Sprite*sp9 = (Scale9Sprite*)image->getVirtualRenderer();
sp9->setState(Scale9Sprite::State::GRAY);
//sp9->setState(Scale9Sprite::State::NORMAL); 正常状态
// 下面的方法行不通
//ima