彩色图片渐变成灰色图片

在遇到英雄死亡需要让它变黑白的过程中参考ps中图片渐变成灰色的方式

解决思路是使用两张图片,一张彩色一张黑白,让彩色透明度随时间增长变0

网上有彩图变灰的代码如下

复制代码
do
    {
        const GLchar* pszFragSource =
        "#ifdef GL_ES \n \
        precision mediump float; \n \
        #endif \n \
        uniform sampler2D u_texture; \n \
        varying vec2 v_texCoord; \n \
        varying vec4 v_fragmentColor; \n \
        void main(void) \n \
        { \n \
        // Convert to greyscale using NTSC weightings \n \
        vec4 col = texture2D(u_texture, v_texCoord); \n \
        float grey = dot(col.rgb, vec3(%f, %f, %f)); \n \
        gl_FragColor = vec4(grey, grey, grey, col.a); \n \
        }";
        auto strPath = StringUtils::format(pszFragSource, r, g, b);
        GLProgram* pProgram = new GLProgram();
        pProgram->initWithByteArrays(ccPositionTextureColor_noMVP_vert, strPath.c_str());//pszFragSource);
        sp->setGLProgram(pProgram);
        CHECK_GL_ERROR_DEBUG();
        
        sp->getGLProgram()->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::VERTEX_ATTRIB_POSITION);
        sp->getGLProgram()->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_COLOR, GLProgram::VERTEX_ATTRIB_COLOR);
        sp->getGLProgram()->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_TEX_COORD, GLProgram::VERTEX_ATTRIB_TEX_COORD);
        CHECK_GL_ERROR_DEBUG();
        
        sp->getGLProgram()->link();
        CHECK_GL_ERROR_DEBUG();
        
        sp->getGLProgram()->updateUniforms();
        CHECK_GL_ERROR_DEBUG();
    } while (0);
复制代码

图片渐变成黑白代码如下

复制代码
    auto strPath = getFilePath("caocao", FileSuffix::Png);
    auto sp = Sprite::create(strPath);
    addChild(sp, 0);
    setSpriteGray(sp, 0.299, 0.587, 0.114);
    sp->setPosition(300, 400);
    cc = Sprite::create(strPath);
    addChild(cc, 1);
    cc->setPosition(sp->getPosition());
    auto fadeTo = FadeOut::create(3.f);
    cc->runAction(/*Sequence::create*/(fadeTo));
复制代码

 

posted on   unreall  阅读(343)  评论(0编辑  收藏  举报

编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

点击右上角即可分享
微信分享提示