cocos2d-x纹理去色

//CCSprite转成CCimage

CCPoint p =
oldSprite->getAnchorPoint();

oldSprite->setAnchorPoint(ccp(0,0));

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 = 0;

for (int i = 0; i < finalImage->getHeight(); i ++)

{

for (int j = 0; 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 + 1] = pData[iBPos + 2] = (unsigned char)iGray;

}

}

CCTexture2D
*texture = newCCTexture2D;

texture->initWithImage(finalImage);

CCSprite* newSprite = CCSprite::createWithTexture(texture);

delete finalImage;

texture->release();

return newSprite;

时间: 2024-08-23 15:58:44

cocos2d-x纹理去色的相关文章

coco2d-x 纹理研究

1.通常情况下用PVR格式的文件来进行图片显示的时候,在运行速度和内存消耗方面都要比PNG格式要快和小.一般情况下PVR消耗的内存比PNG消耗的内存小25%左右.PVR格式可以用ZWoptex导出.PVR是apple芯片能直接读取和显示的文件. 2.图片抗锯齿处理. 图片放大时的处理: 图片在放大的时候会出现锯齿.纹理类提供了setAntiAliasTexParameters()函数来处理抗锯齿.当图片放大的时候会使用相邻的四个像素进行混合运算.从而消除锯齿.但是会让图片产生模糊的感觉. 左边使

如何优化cocos2d程序的内存使用和程序大小

在我完成第一个游戏项目的时候,我深切地意识到"使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰".而我刚开始接触cocos2d的时候,社区里面的人们讨论了一个非常有意义的话题:"请简单地讲述你认为新手cocos2d程序员在他开始编码之前,最应该先知道,或者应该关注和注意的事项."这个问题的答案很多,有人讲是"如何加载和保存游戏数据",有人讲的是"如何实现有限状态机"等等.而最吸引我的则是,有一

cocos2d-x 图片纹理优化 资源加载方案

原文地址:http://blog.sina.com.cn/s/blog_64d591e80101me1y.html 文章主要解决了我一直以来疑惑的几个问题 1.到底用不用2的N次幂的图片 2.为什么加载资源的时候,内存会突然飙高 3.内存突然飙高的解决方案 4.如何解决程序在加载资源卡的问题 首先是cocos2d-x官网上的优化建议 一帧一帧载入游戏资源 减少绘制调用,使用"Use CCSpriteBatchNode" 载入纹理时按照从大到小的顺序 避免高峰内存使用 使用载入屏幕预载入

cocos2dx 游戏中内存优化

全文如下: 我目前正完成我的最后一个合约项目.在这个项目的最后阶段,我需要考虑的一件事情就是如何优化游戏的内存使用. 在今天的iDevBlogADay文章中,我将向大家讲述,我是如何减少25-30MB游戏内存消耗的(现在游戏消耗内存90-95MB,我还通过这个过程,消除了一些由于内存警告而引起的程序崩溃问题).同时,我还将游戏程序的大小从25MB减少到了20MB以下(如果苹果没有在不久前将蜂窝网下载应用的限制从20MB提高到50MB的话,那么我这个小的优化就太棒了,它可以潜在地给我带来更多的下载

cocos2dx内存优化

纹理消耗了大量内存 在大部分情况下,是纹理(textures)消耗了游戏程序大量的内存.因此,纹理是我们首要考虑优化的对象 纹理加载 cocos2d里面纹理加载分为两个阶段:从图片文件中创建一个Image对象;以这个创建好的Image对象来创建Texture2D对象.加载纹理的文件io操作和纹理创建都是耗时的,需要避免一帧之内加载大量图片资源.因为不仅会导致卡顿还会导致内存过高.最好的方式是多线程加载即异步加载. 使用JPG图片? cocos2d使用JPG纹理的时候有一个问题,因为JPG纹理在加

cocos2d 游戏开发实战

文章转自:http://uliweb.clkg.org/tutorial/read/40 6   cocos2d 游戏开发实战 6.1   创建cocos2d项目 6.2   cocos2d v3 "hello world" 6.2.1   显示一个飞船 6.3   精灵 6.4   開始 space viking 之旅 6.4.1   添加 sneakyinput 6.5   精灵的移动效果,旋转效果 6.6   定时器效果 6.7   启动 cocos2d,默认竖屏 6.8   检

cocos2d 如何优化内存使用

如何优化内存使用 内存优化原理 为优化应用内存使用,开发人员首先应该知道什么最耗应用内存,答案就是纹理! 纹理几乎会占据90%应用内存.所以尽量最小化应用的纹理内存使用,否则应用很有可能会因为低内存而崩溃. 本文介绍Cocos2d-x游戏通用的两条内存优化原理指导. 认识瓶颈寻找方案 什么样的纹理最耗应用内存?或这些纹理会消耗多少内存?当然这个不用手动计算,只需猜测. 工具在这里已经准备好了.使用的是苹果的工具“Allocation & Leaks”.你可以在Xcode中长按“Run”命令,选择

纹理缓存(Texture Cache)

纹理缓存是将纹理缓存起来方便之后的绘制工作.每一个缓存的图像的大小,颜色和区域范围都是可以被修改的.这些信息都是存储在内存中的,不用在每一次绘制的时候都发送给GPU. CCTextureCache Cocos2d通过调用CCTextureCache或者CCSpriteFrameCache来缓存精灵的纹理. 当这个精灵调用CCTextureCache 或 CCSpriteFrameCache的方法的时候,cocos2dx将使用纹理缓存来创建一个CCSprite.所以你可以预先将纹理加载到缓存中,这

Cocos2d之Texture2D类详解之将文件加载成Texture2D对象

一.声明 笔者以cocos2d框架cocos2d-x-3.3rc0版本的源码做分析.本文为笔者原创,允许转载和分享,只要注明文章出处即可. 二.简介 Texture2D类简介 Texture2D类允许开发者用图像.文本信息和简单的数据来创建OpenGL2D纹理.被创建的纹理拥有两个维度.根据开发者创建Texture2D对象方式的不同,实际图像的尺寸可能比生成的纹理的尺寸要小,而且纹理的内容是倒置的. 像素格式 在计算机图形学中,人们用每个像素在内存中的总位数以及分别存储红.蓝.绿和alpha(阿