cocos2d-x截屏功能clippingnode也能使用——白白

原创 2014年10月28日 16:08:39

更多精彩分享:http://blog.csdn.net/u010229677

3.1版本:

在Director里面增加一个函数:

bool Director::saveScreenshot(const std::string& fileName,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 false;  
		}  
	} else {  
		CCLOG("cocos2d: the image can only be saved as JPG or PNG format");  
		return false ;  
	}  
	//获取屏幕尺寸,初始化一个空的渲染纹理对象  
	auto renderTexture = RenderTexture::create(getWinSize().width, getWinSize().height, Texture2D::PixelFormat::RGBA8888, GL_DEPTH24_STENCIL8); //最后一个参数省略的话,对clippingnode截图是无效的
	//清空并开始获取  
	renderTexture->beginWithClear(0.0f, 0.0f, 0.0f, 0.0f);  
	//遍历场景节点对象,填充纹理到RenderTexture中  
	getRunningScene()->visit();  
	//结束获取  
	renderTexture->end();  
	//保存文件  
	renderTexture->saveToFile(fileName , format);  
	//使用schedule在下一帧中调用callback函数  
	auto fullPath = FileUtils::getInstance()->getWritablePath() + fileName;  
	auto scheduleCallback = [&,fullPath,callback](float dt){  
		callback(fullPath); 
	};  
	return true;
}

调用的话:

Director::getInstance()->saveScreenshot("sss.png", nullptr);

3.2版本:

#include "base/ccUtils.h"
utils::captureScreen([](){log("ok");}, "dd.png");


cocos2dx遮罩失效的解决与分析

问题描述:   CCClippingNode在Windows下显示正常,能够正常裁剪,但移植真机后,iOS系统下却无法正常裁剪; 解决办法:   使用cocos2dx建立的默认工程,...
  • u013790419
  • u013790419
  • 2014年09月15日 10:26
  • 2278

cocos2dx3.10 ClippingNode存在的bug

先说bug触发的条件: 先为一个节点设置了剪裁,但是在动画中,需要更新这个剪裁的形状,然后再以这个新的形状设置剪裁。 bug代码: clip_front_->setStencil(pfront)...
  • glunoy
  • glunoy
  • 2016年03月05日 08:37
  • 1765

Cocos2dx3.0 疑难解答系列 (五)ClippingNode 在小米等手机,出现白屏,显示不正常的现象

ClippingNode 在小米等手机,出现白屏,显示不正常的现象 在gai项目的android...
  • hunter_hb
  • hunter_hb
  • 2014年04月28日 10:20
  • 2159

cocos2dx-3.2(35) ClippingNode 遮罩

我的生活,我的点点滴滴!!
  • AC_huang
  • AC_huang
  • 2014年09月26日 14:49
  • 7284

Cocos2d-x 截图功能

(1)Cocos2d-x 2.x Cocos2d-x 2.x没有提供截图功能,但是可以用CCRenderTexture来实现这个功能: void CTestLayer::SaveScree...
  • w174504744
  • w174504744
  • 2014年09月03日 17:44
  • 3806

cocos2d-lua屏幕截屏的方法,超好用,亲测可行

cocos2d-x lua系统自带截屏功能,使用方便。代码如下: local fileName = "printScreen.png" -- 移除纹理缓存 cc.Di...
  • zwcwu31
  • zwcwu31
  • 2016年02月16日 16:08
  • 3496

cocos2dx中ClippingNode实现带边框圆形头像

有个小需求,需要实现一个圆形的头像。要ui设计直接给圆形的png当然可以,但这种解决方式总是不优雅。然后就在网上查了半天,最终找到了使用ClippingNode来实现的方法。 关于ClippingNo...
  • pur_e
  • pur_e
  • 2016年01月19日 10:09
  • 3624

Cocos2d-x 3.0截屏功能集成

3.0的截屏和2.x的截屏基本上相同,都是利用RenderTexture来处理,在渲染之前调用call函数,然后调用Cocos的场景visit函数对其进行渲染,渲染结束后调用end函数即可。只是3.0...
  • fybing1986
  • fybing1986
  • 2014年08月23日 11:29
  • 268

Cocos2d-x 图像渲染和动画——裁剪(ClippingNode)

概述ClippingNode(裁剪节点)可以用来对节点进行裁剪,可以根据一个模板切割图片的节点,生成任何形状的节点显示。ClippingNode是Node的子类,可以像普通节点一样放入Layer,Sc...
  • sinat_24229853
  • sinat_24229853
  • 2016年07月14日 07:27
  • 279

Cocos2d-x3.1及3.2实现截屏功能

1、Cocos2d-x3.1 在Cocos2d-x3.2之前,Cocos引擎没有提供截图功能,但是可以通过RenderTexture实现, 1.1首先在CCDirector.h中添加如下代码:并在...
  • yuxikuo_1
  • yuxikuo_1
  • 2014年09月04日 14:04
  • 1924
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x截屏功能clippingnode也能使用——白白
举报原因:
原因补充:

(最多只允许输入30个字)