本人新手,对cocos2d-x的使用还没有这么熟练,可否麻烦大神贴出代码? 十分感谢
这个得顶上去,想用这种方式节省点资源。。。
同求高手指点迷津!
lz找到好的方法了么
同求 


Texture2D* openImage(const char* jpgFile,const char* maskFile)
{
std::string name = jpgFile;
name.erase(name.length()-4,4);
std::string outname = name + “.png”;
auto ret = Director::getInstance()->getTextureCache()->getTextureForKey(name);
if(ret)
return ret;
auto _img = new Image();
auto _jpg = new Image();
auto _mask = new Image();
do
{
if(!_jpg->initWithImageFile(jpgFile))
break;
if(!_mask->initWithImageFile(maskFile))
break;
auto _color = _jpg->getData();
auto _alpha = _mask->getData();
auto _w = _jpg->getWidth();
auto _h = _jpg->getHeight();
auto _l = _jpg->getDataLen();
auto _out = new unsigned char;
for(int idx = 0; idx < _l ; idx++)
{
_out = _color;
_out = _color;
_out = _color;
_out = _alpha;
}
_img->initWithRawData(_out,_l*4,_w,_h,4);
ret = Director::getInstance()->getTextureCache()->addImage(_img,name);
_img->saveToFile(outname, false);
CC_SAFE_DELETE(_out);
break;
} while (1);
CC_SAFE_DELETE(_img);
CC_SAFE_DELETE(_jpg);
CC_SAFE_DELETE(_mask);
return ret;
}
自己去写shader
8l的解决方法虽然可行
但是我个人觉得不建议这样搞。
因为用cpu 来处理图片资源代价太昂贵了。
大哥!!万分感谢你啊!!

3Q~~~~十分感谢
会写shader的话,就不会来这提问了,对图形和shader这块都不了解
这个需一些opengl的知识
这个效果有什么用
— Begin quote from ____
引用第15楼comrade110于2014-09-01 16:26发表的 :
这个效果有什么用 http://www.cocoachina.com/bbs/job.php?action=topost&tid=216007&pid=1043646
— End quote
省资源,缩小最终发行包的size。 一张半透明的png可以用2张jpg来替换掉,可以省很多!
内存消耗变大很多
大神
一张png图片如何分离成一张jpg和一张mask呢,有没有什么工具可以批量制作呢
会么? 同在一张纹理中
多谢了,可惜32位的机子用不了
自己写shader和8楼字节改纹理的方法都可以达到相同的表现效果,一个是在渲染过程中有gpu去处理,一个是在生产给GPU渲染的纹理时合成纹理。算法是一样的。但是哪个更实用呢?两个我都试过(我用的是cocos2dx 3.3 lua版本),从易用性上推荐合成纹理的方法。毕竟这个在游戏中是被大量使用的,用OpenGL来改变显示效果对机器的压力也很大,每一帧都要打开OpenGL一次,cocos提供的批量渲染就体现不出来了。cocos的c++层面对渲染树是有优化的。用OpenGL修改的显示对象会失去设置透明度的属性(c++是改了透明值,但是shader里拿到是原始的纹理来改变显示效果)。当然淡入淡出,改变颜色等也不可用。所以大批量使用的话,推荐合成纹理的方法,在游戏开始的初期做好图片的预加载。对运行的游戏效率不会有太大的影响。ps:没试过发这么长的评论,有错的地方多多包含。