cocos2dx 3.x中灰度精灵的用法


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");

//设置精灵着色器为灰度着色器

sprite->setGLProgram(GLProgramCache::getInstance()->getGLProgram("grey_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资源文件中找到。然后放到工程资源目录下就可以了。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...