关于cocos2d-x精灵加亮及变灰效果
- //根据现有CCSprite,变亮和变灰
- static CCSprite* graylightWithCCSprite(CCSprite* oldSprite,bool isLight)
- {
- //CCSprite转成CCimage
- CCPoint p = oldSprite->getAnchorPoint();
- oldSprite->setAnchorPoint(ccp(,));
- CCRenderTexture *outTexture = CCRenderTexture::create((int)oldSprite->getContentSize().width,(int)oldSprite->getContentSize().height);
- outTexture->begin();
- oldSprite->visit();
- outTexture->end();
- oldSprite->setAnchorPoint(p);
- CCImage* finalImage = outTexture->newCCImage();
- unsigned char *pData = finalImage->getData();
- int iIndex = ;
- if(isLight)
- {
- for (int i = ; i < finalImage->getHeight(); i ++)
- {
- for (int j = ; j < finalImage->getWidth(); j ++)
- {
- // highlight
- int iHightlightPlus = ;
- int iBPos = iIndex;
- unsigned int iB = pData[iIndex];
- iIndex ++;
- unsigned int iG = pData[iIndex];
- iIndex ++;
- unsigned int iR = pData[iIndex];
- iIndex ++;
- //unsigned int o = pData[iIndex];
- iIndex ++; //原来的示例缺少
- iB = (iB + iHightlightPlus > ? : iB + iHightlightPlus);
- iG = (iG + iHightlightPlus > ? : iG + iHightlightPlus);
- iR = (iR + iHightlightPlus > ? : iR + iHightlightPlus);
- // iR = (iR < 0 ? 0 : iR);
- // iG = (iG < 0 ? 0 : iG);
- // iB = (iB < 0 ? 0 : iB);
- pData[iBPos] = (unsigned char)iB;
- pData[iBPos + ] = (unsigned char)iG;
- pData[iBPos + ] = (unsigned char)iR;
- }
- }
- }else{
- for (int i = ; i < finalImage->getHeight(); i ++)
- {
- for (int j = ; j < finalImage->getWidth(); j ++)
- {
- // gray
- int iBPos = iIndex;
- unsigned int iB = pData[iIndex];
- iIndex ++;
- unsigned int iG = pData[iIndex];
- iIndex ++;
- unsigned int iR = pData[iIndex];
- iIndex ++;
- //unsigned int o = pData[iIndex];
- iIndex ++; //原来的示例缺少
- unsigned int iGray = 0.3 * iR + 0.4 * iG + 0.2 * iB;
- pData[iBPos] = pData[iBPos + ] = pData[iBPos + ] = (unsigned char)iGray;
- }
- }
- }
- CCTexture2D *texture = new CCTexture2D;
- texture->initWithImage(finalImage);
- CCSprite* newSprite = CCSprite::createWithTexture(texture);
- delete finalImage;
- texture->release();
- return newSprite;
- }
http://blog.csdn.net/chenli0741/article/details/8860036
在这个博客提供的png图片alpha通道的精灵变灰与变亮的。
但是,在变灰的时候,如果图片是有红色的话,则会出现不同的效果,不是叠加,而图片直接变灰。
可以看出,第二种情况,不是叠加上去的,而是把图片都变灰了。由于不怎么熟悉ARGB,还未解决的办法。
关于cocos2d-x精灵加亮及变灰效果的更多相关文章
- UIImageView变灰
1.UIImageView圆角 CALayer *l = [cell.imgAvatarImage layer]; [l setMasksToBounds:YES]; [l setCornerRadi ...
- [原]quick2.25精灵变灰
由于quick2.25没有导出shader相应的接口,所以2.25无法直接使用shader. 本文简单介绍如何导出相应接口,同时教大家使用shader 实现精灵变灰 一.编写静态函数,以供导出使用(直 ...
- cocos2d 3.X Shader 变暗和变灰
转自http://www.waitingfy.com/archives/1741 1.为了节约一张图引发的Shader使用 我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示 ...
- 怎么让让整个HTML页面变灰
怎么让让整个HTML页面变灰 其实很简单,我们只需要一句话. html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1 ...
- CSS使图片变灰
为了悼念,各大网站都纷纷将自己的站点颜色调灰,就连图片也一样,到底如何实现的呢,请看下面的代码. 〈img src="http://hovertree.com/hvtimg/201512/f ...
- NGUI 图片变灰
效果图 1.先准备好一个变灰shader.代码如下 Shader "Custom/Gray" { Properties { _MainTex ("Base (RGB), ...
- UIButton 点击后变灰
+(UIButton *)getBlueButtonWithTitle:(NSString *)aTitle{ UIButton *button = [UIButton buttonWithType: ...
- 转载网易博客:整理各大网站让网站变灰的css代码
2013-07-21 15:06:47 北京时间2013年4月20日8时02分四川省雅安市芦山县(北纬30.3,东经103.0)发生7.0级地震.震源深度13公里.各大网站将其网站变灰,本人整理了下部 ...
- 实现JQuery EasyUI右键菜单变灰不可用效果
使用过EasyUI的朋友想必都知道疯狂秀才写的后台界面吧,作为一个初学者我不敢妄自评论它的好坏,不过它确实给我们提供了一个很好框架,只要在它的基础上进行修改,基本上都可以满足我们开发的需要. 知道“疯 ...
随机推荐
- ORACLE 常用系统函数
1. 字符类 1.1 ASCII(c ) 函数 和CHR( i ) ASCII 返回一个字符的ASCii码,其中c表示一个字符;CHR 返回ascii码值i 所对应的字符 . 如: S ...
- Codeforces Round #197 (Div. 2) : A
水题一个: 直接贴代码: #include<cstdio> #include<algorithm> #include<cstring> using namespac ...
- PS命令删除所有EXCHANGE2013内用户邮件
因为在测试的时间产生了大量测试邮件,所以在正式上线前,要删除所有用户的邮件. 命令如下: Get-Mailbox | Search-Mailbox -DeleteContent
- 在 Visual Studio 2010 中创建 ASP.Net Web Service
第一步:创建一个“ASP.Net Empty Web Application”项目 第二步:在项目中添加“Web Service”新项目 第一步之后,Visual Studio 2010会创建一个仅含 ...
- C#判断操作系统类型汇总
Windows操作系统的版本号一览 操作系统 PlatformID 主版本号 副版本号 Windows95 1 4 0 Windows98 1 4 10 WindowsMe 1 4 90 Window ...
- BZOJ_3196_二逼平衡树_(树套树,线段树+Treap)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3196 可以处理区间问题的平衡树. 3196: Tyvj 1730 二逼平衡树 Time Lim ...
- win7怎么调屏幕自动休眠时间
win7怎么调屏幕自动休眠时间 2013-03-28 17:13匿名 | 分类:Windows | 浏览1327次 我也不知道怎么说 我的电脑的问题就是 电脑放那不动过2,3分钟屏幕就暗了 要是不动过 ...
- AjaxPro使用说明
转自:http://www.cnblogs.com/lexus/archive/2007/11/29/977281.html 目录 AjaxPro使用说明 1 目录 2 修改历史纪录 ...
- [转]NHibernate之旅(7):初探NHibernate中的并发控制
本节内容 什么是并发控制? 悲观并发控制(Pessimistic Concurrency) 乐观并发控制(Optimistic Concurrency) NHibernate支持乐观并发控制 实例分析 ...
- NHibernate加载DLL错误
这几天在开发关于Rest的服务,其中用到了NHibernate来进行数据库交互,突然有一天发现了一个错误,如下: Could not load file or assembly 'NHibernate ...