ios - 如何使用 setBlendFunc 将 CCSprite 转换为黑白/灰色

标签 ios cocos2d-iphone

是否可以使用 setBlendFunc 将 CCSprite 制作成黑白的?如果是,请告诉如何做。

更多详情:

我必须在某个时间点将我的游戏 Sprite (背景、角色)设置为灰色/黑色和白色。我不想为此拍摄另一张照片。我试过 CCTexture2DMutable。但问题是它需要额外的内存相同的 Sprite 。

有什么方法可以使用一个蒙版图像并将所有 Sprite 设为灰度。 请帮忙。

最佳答案

这不是数学上正确的灰度,但看起来是黑白的:

// setup grayscaling:
GLfloat rgba[4] = { 0.65f, 0.65f, 0.65f, 1.0f };
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_DOT3_RGB );
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, rgba );
glTexEnvi( GL_TEXTURE_ENV, GL_SRC0_RGB, GL_CONSTANT );
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
glTexEnvi( GL_TEXTURE_ENV, GL_SRC1_RGB, GL_TEXTURE );
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
// ... glDrawArrays() here ...
// turn off grayscaling:
glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

将这段代码插入到CCSprite绘图方法中。 0.65f rgba 的值是实验设置的,尝试调整它。

关于ios - 如何使用 setBlendFunc 将 CCSprite 转换为黑白/灰色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8738215/

相关文章:

ios - 在 iOS 7 中处理界面旋转

objective-c - Cocos2d调度方法中的选择器

xcode4 - cocos2d 可以在 Ipad3 上支持 4096x4096 纹理吗?

cocos2d-iphone - Cocos2D 2.0 - 将 Sprite 添加到图层...中心怎么样?

ios - 是否可以将单例与 ViewController 一起使用?

ios - 在 Unity 中本地化 iOS 应用名称

ios - 将字符串数组打印到 UILabel

ios - 如何像 iPad 时钟一样制作非常流畅的秒针动画(没有滴答声)

iphone - Cocos2D 帮助 : How to implement page flip or page curl in cocos2D?

cocos2d-iphone - 如何翻转复杂的 box2d 夹具?