Cocos2d-x中让CCSprite变灰(Gray)的简单办法

原文地址:http://blog.csdn.net/u012940116/article/details/17003841

之前一直做flash开发,像变灰,高亮,描边了这些效果非常容易实现,有现成的api直接调用即可,cocos2d-x并没有提供,所以遇到这种需求就得硬着都头寻求解决方案了,废话不多说,直接上代码:

CCColorUtil.cpp:

[cpp]  view plain copy
  1. //  
  2. //  CCColorUtil.cpp  
  3. //  quickcocos2dx  
  4. //  
  5. //  Created by Terran Tian on 13-11-19.  
  6. //  Copyright (c) 2013年 qeeplay.com. All rights reserved.  
  7. //  
  8. #include "CCColorUtil.h"  
  9. #include "cocos2d.h"  
  10. using namespace cocos2d;  
  11. void CCColorUtil::addGray(CCSprite* sp)  
  12. {  
  13.     do  
  14.     {  
  15.         CCGLProgram* pProgram = CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionTextureGray);  
  16.         sp->setShaderProgram(pProgram);  
  17.         CHECK_GL_ERROR_DEBUG();  
  18.           
  19.         sp->getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);  
  20.         sp->getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);  
  21.         sp->getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);  
  22.         CHECK_GL_ERROR_DEBUG();  
  23.           
  24.         sp->getShaderProgram()->link();  
  25.         CHECK_GL_ERROR_DEBUG();  
  26.           
  27.         sp->getShaderProgram()->updateUniforms();  
  28.         CHECK_GL_ERROR_DEBUG();  
  29.     } while (0);  
  30. }  
  31. void CCColorUtil::removeGray(CCSprite* sp)  
  32. {  
  33.     do  
  34.     {  
  35.         CCGLProgram* pProgram = CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionTextureColor);  
  36.         sp->setShaderProgram(pProgram);  
  37.         CHECK_GL_ERROR_DEBUG();  
  38.           
  39.         sp->getShaderProgram()->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);  
  40.         sp->getShaderProgram()->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);  
  41.         sp->getShaderProgram()->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);  
  42.         CHECK_GL_ERROR_DEBUG();  
  43.           
  44.         sp->getShaderProgram()->link();  
  45.         CHECK_GL_ERROR_DEBUG();  
  46.           
  47.         sp->getShaderProgram()->updateUniforms();  
  48.         CHECK_GL_ERROR_DEBUG();  
  49.     } while (0);  
  50. }  

CCColorUtil.h:

[cpp]  view plain copy
  1. //  
  2. //  CCColorUtil.h  
  3. //  quickcocos2dx  
  4. //  
  5. //  Created by Terran Tian on 13-11-19.  
  6. //  Copyright (c) 2013年 qeeplay.com. All rights reserved.  
  7. //  
  8. #ifndef __quickcocos2dx__CCColorUtil__  
  9. #define __quickcocos2dx__CCColorUtil__  
  10. #include <iostream>  
  11. #endif /* defined(__quickcocos2dx__CCColorUtil__) */  
  12. #include "cocos2d.h"  
  13. using namespace cocos2d;  
  14. class CCColorUtil  
  15. {  
  16. public:  
  17.     static void addGray(CCSprite* sp);  
  18.     static void removeGray(CCSprite* sp);  
  19.       
  20. };  

你可能感兴趣的:(color,cocos2d-x,灰化)