刀塔传奇中图片mask混合是如何实现的

如图,黑色部分运算后,得到一个背景透明的背包,这是如何实现的呢?
网上看了gl混合模式的说明,但是看不懂,求大神指点.

比较简单的方法都是用setBlendFunc来实现的, 但是对于刀塔传奇确不合适,因为他用的是灰度图,所以要在加载图片的时候根据mask的灰度图设置alpha通道,可能glxxx函数能解决,但我也不太懂,呵呵

自己写个GLSL 不是很容易实现吗?

伪代码
vec4 pixelColor = texture2D(s_texture, v_texCoord)
if(颜色 不是 黑色)
{
pixelcolor.a = 0.0;//其实这里可以做很多东西。看个人需求。
}

本人新手,对cocos2d-x的使用还没有这么熟练,可否麻烦大神贴出代码? 十分感谢

这个得顶上去,想用这种方式节省点资源。。。

同求高手指点迷津!

lz找到好的方法了么

同求 :2::2::2:

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 来处理图片资源代价太昂贵了。

大哥!!万分感谢你啊!! :2: :2: :2:

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呢,有没有什么工具可以批量制作呢

http://malideveloper.arm.com/cn/develop-for-mali/sample-code/etcv1-texture-compression-and-alpha-channels/