关于3.2分享截屏的问题

最近要做分享截图功能,引擎自带的截图不能控制尺寸,按照论坛的例子实现的有问题

:void saveScreenshot(const std::string& fileName, float scale, const std::function<void(const std::string&)>& callback)
{
    Image::Format format;
 
 //进行后缀判断
    if(std::string::npos != fileName.find_last_of(".")){
        auto extension = fileName.substr(fileName.find_last_of("."),fileName.length());
        if (!extension.compare(".png")) {
            format = Image::Format::PNG;
        } else if(!extension.compare(".jpg")) {
            format = Image::Format::JPG;
        } else{
 CCLOG("cocos2d: the image can only be saved as JPG or PNG format");
            return;
        }
    } else {
 CCLOG("cocos2d: the image can only be saved as JPG or PNG format");
        return ;
    }
 
 auto scene = Director::getInstance()->getRunningScene();
    auto size = Director::getInstance()->getWinSize();
 
 //获取屏幕尺寸,初始化一个空的渲染纹理对象
    auto renderTexture = RenderTexture::create(size.width * scale, size.height * scale, Texture2D::PixelFormat::RGBA8888);
    Point ancPos = scene->getAnchorPoint();
 
 // 缩小屏幕截屏区域
    scene->setScale( scale );
    scene->setAnchorPoint(cocos2d::Point(0, 0));    //保存文件
 
 //渲染纹理开始捕捉
    renderTexture->begin();
 
 //绘制当前场景
    scene->visit();
 
    //结束
    renderTexture->end();
 
    renderTexture->saveToFile(fileName , format);
 
 // 恢复屏幕尺寸
    scene->setScale(1);
    scene->setAnchorPoint(ancPos);
 
 //使用schedule在下一帧中调用callback函数
    auto fullPath = FileUtils::getInstance()->getWritablePath() + fileName;
    auto scheduleCallback = &,fullPath,callback](float dt){
        callback(fullPath);
    };
    auto _schedule = scene->getScheduler();
    _schedule->schedule(scheduleCallback, scene, 0.0f,0,0.0f, false, "screenshot");

}

结果图片尺寸对了,但是截图只有左下角的部分图片~ 有知道的吗? 如何修改

RenderTexture没办法指定初始的位置。但是你可以在saveToFile做文章。

或者参考onCaptureScreen的实现,glReadPixels这里。

不是初始位置,
是不是scene缩放之后绘制到RenderTexture不行了?