std::string shader = FileUtils::getInstance()->getStringFromFile("example_greyScale.fsh");
GLProgramCache::getInstance()->addGLProgram(GLProgram::createWithByteArrays(ccPositionTextureColor_noMVP_vert, shader.c_str()), "grey_effect");
//以上两句只需要用一次就可以
auto sprite = Sprite::create("CloseSelected.png");
//保存原来的精灵着色器,并命名为“normal_effect”
GLProgramCache::getInstance()->addGLProgram(sprite->getGLProgram(), "normal_effect");
//设置精灵着色器为灰度着色器
addChild(sprite);
sprite->setLocalZOrder(-1);
sprite->setPosition(visibleSize.width/2+100, visibleSize.height/2);
设置灰色精灵变回正常的话需要先保存原来的shader的GLProgram。也是一句代码。
sprite->setGLProgram(GLProgramCache::getInstance()->getGLProgram("normal_effect"));
example_greyScale.fsh这个文件可以在test资源文件中找到。然后放到工程资源目录下就可以了。
本文介绍如何使用Cocos2d-x通过加载特定的着色器文件实现图片的灰度显示效果,并提供了如何切换回原始颜色的方法。
658

被折叠的 条评论
为什么被折叠?



