之前精灵变灰都用的是别人写的一个GraySprite,实在是有很多局限

后来有个需求是要让CCControlButton在不传disable状态图片的时候,自动把normal的图片变灰

查阅多方资料后,终于把问题搞定

  1. 在cocos2dx/shaders目录下新建一个ccShader_PositionTextureGray_frag.h
  2. 找到ccShaders.h,在最后加上
  3. 找到ccShaders.cpp,在最后加上
  4. 找到CCGLProgram.h在enum后面的define后加上
  5. 找到CCShaderCache.cpp,在开头enum的最后加上kCCShaderType_PositionTextureGray
  6. 继续在CCShaderCache.cpp的loadDefaultShaders()最后添加
  7. 继续在CCShaderCache.cpp的reloadDefaultShaders()最后添加
  8. 继续在CCShaderCache.cpp的loadDefaultShader(CCGLProgram *p, int type)最后添加一个case条件
  9. 新建一个ColorUtils.h
  10. 新建一个ColorUtils.cpp
  11. 使用
    对于CCSprite

    对于CCScale9Sprite

    remove亦然

 

Leave a reply

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> 

required