是否可以使用 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/