您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx精灵变灰

2015-07-24 15:19 465 查看
使用shader使精灵变灰,很简单,只需下面这个类:

#ifndef __ColorUtil_H__
#define __ColorUtil_H__

#include "cocos2d.h"
USING_NS_CC;

class ColorUtil{
public:
static ColorUtil* getInstance();
ColorUtil();
~ColorUtil();
void addGray(Sprite* sp);
void removeGray(Sprite* sp);
};

#endif


#include "ColorUtil.h"
ColorUtil::ColorUtil()
{
}

ColorUtil::~ColorUtil()
{
}
static ColorUtil* instance = NULL;
ColorUtil* ColorUtil::getInstance(){
if(instance)
{
instance = new ColorUtil();
}
return instance;
}

void ColorUtil::addGray(CCSprite* sp)
{
do
{
auto fileUtiles = FileUtils::getInstance();
auto fragmentFullPath = fileUtiles->fullPathForFilename("img/shader/ccShader_PositionTextureGray_frag.fsh");//这个文件可以在官方的例子里找到
auto fragSource = fileUtiles->getStringFromFile(fragmentFullPath);
auto glprogram = GLProgram::createWithByteArrays(ccPositionTextureColor_noMVP_vert, fragSource.c_str());
sp->setShaderProgram(glprogram);
CHECK_GL_ERROR_DEBUG();
} while (0);
}
void ColorUtil::removeGray(CCSprite* sp)
{
do
{
CCGLProgram* pProgram = CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionTextureColor);
sp->setShaderProgram(pProgram);
CHECK_GL_ERROR_DEBUG();
} while (0);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: