【Cocos2d-x游戏开发】彩色Sprite设置黑白,还有

很常用的功能,比如说RPG游戏里,某个角色挂了,Ta的头像变成黑白的,加了复活魔法又变回彩色的了。如果把所有图片都准备一张黑白的,又麻烦也挺占空间的。其实,图片灰阶用Cocos自带的方法就可以实现,不止如此,除了灰阶还有各种其他效果,甚至完全通过参数调整自己想要的都可以。

方法如下:
[code]
auto fileUtiles = FileUtils::getInstance();
auto fragmentGrayFullPath = fileUtiles->fullPathForFilename("gray.fsh");
auto fragSource = fileUtiles->getStringFromFile(fragmentGrayFullPath);
auto glprogram = GLProgram::createWithByteArrays(ccPositionTextureColor_noMVP_vert, fragSource.c_str());
grayGLProgrameState = GLProgramState::getOrCreateWithGLProgram(glprogram);
grayGLProgrameState->retain();
想要变黑白的Sprite->setGLProgramState(grayGLProgrameState);
[/code]

里面的文件gray.fsh是可以自己编辑的,直接用记事本打开即可,里面的内容是这样的:
[code]
#ifdef GL_ES
precision mediump float;
#endif

varying vec4 v_fragmentColor;
varying vec2 v_texCoord;

void main(void)
{
vec4 c = texture2D(CC_Texture0, v_texCoord);
gl_FragColor.xyz = vec3(0.2126*c.r + 0.7152*c.g + 0.0722*c.b);
gl_FragColor.w = c.w;
}
[/code]

若要知道每个参数的含义,可以看这个帖子http://blog.sina.com.cn/s/blog_923fdd9b0101ew6e.html
另外,Cocos的示例程序里有好多已经编辑好的.fsh文件,直接考过来用即可。变回原来色调的.fsh如下:
[code]
#ifdef GL_ES
precision mediump float;
#endif

varying vec4 v_fragmentColor;
varying vec2 v_texCoord;

void main(void)
{
gl_FragColor = texture2D(CC_Texture0, v_texCoord);
}
[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值