cocos2d-x -lua 关于去图片某个点的像素及alpha值

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    auto m_imgMan = CCSprite::create("red.png");
    m_imgMan->setPosition(ccp(100, 100));
    m_imgMan->setAnchorPoint(Vec2(0.5f, 0.5f));
    addChild(m_imgMan, 1);

    //这里参数很固定 没有什么可改的余地
    //参数1 你需要渲染出来区域的宽
    //参数2 你需要渲染出来区域的高
    //参数3 必须是这个模式 否则后面复制内存好像会有问题Texture2D::PixelFormat::RGBA8888
    auto m_pRenderTexture = RenderTexture::create(m_imgMan->getContentSize().width, m_imgMan->getContentSize().height, Texture2D::PixelFormat::RGBA8888);
    m_pRenderTexture->setPosition(ccp(100, 100));
    //m_pRenderTexture->setAnchorPoint(Vec2(0, 0));//设置锚点无效 锚点默认0.5f, 0.5f
    addChild(m_pRenderTexture, 2);

    Color4B color4B = { 0, 0, 0, 0 };

    //开始准备绘制
    m_pRenderTexture->begin();
    //绘制使用的临时精灵,与原图是同一图片
    CCSprite* pTempSpr = CCSprite::createWithSpriteFrame(m_imgMan->displayFrame());
    pTempSpr->setPosition(ccp(pTempSpr->getContentSize().width / 2, pTempSpr->getContentSize().height / 2));
    //绘制
    pTempSpr->visit();
    m_pRenderTexture->setAnchorPoint(Vec2(0, 0));
    //结束绘制
    m_pRenderTexture->end();

    //解决方案原文 找了一下午原因 竟是这样 http://blog.csdn.net/super_level/article/details/41707687
    Director::getInstance()->getRenderer()->render();//在3.0此处必须写上这个,否则newImage整张图片都为黑色,或者在下一帧获取  

    //通过画布拿到这张画布上每个像素点的信息,封装到CCImage中
    Image* pImage = m_pRenderTexture->newImage();

    //获取像素数据
    unsigned char* data_ = pImage->getData();
    unsigned int *pixel = (unsigned int *)data_;
    //pixel = pixel + (y * (int)pTempSpr->getContentSize().width) * 1 + x * 1;//改变这里去调节其他像素
    //R通道
    color4B.r = *pixel & 0xff;
    //G通道
    color4B.g = (*pixel >> 8) & 0xff;
    //B通道
    color4B.b = (*pixel >> 16) & 0xff;
    //Alpha通道,我们有用的就是Alpha
    color4B.a = (*pixel >> 24) & 0xff;

    CCLOG("cur first color: alpha = %d", color4B.a);//

    if (color4B.a > 50)
    {
        CCLOG("cur first color: alpha > 50");
    }

    return true;
}
cocos2d-x -lua 关于去图片某个点的像素及alpha值_第1张图片
image.png
image.png
red.png

你可能感兴趣的:(cocos2d-x -lua 关于去图片某个点的像素及alpha值)