彩色图片渐变成灰色图片
在遇到英雄死亡需要让它变黑白的过程中参考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));
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!