关于 Cocos2d-x 3.x+截屏功能
来源:互联网 发布:unix 网络编程 源代码 编辑:程序博客网 时间:2024/06/05 02:45
问题:
在写cocos2d-x截屏功能的时候遇到了一个问题。
虽然调用了 Director::getInstance()->getRunningScene(); 但是并没有获取到当前Scene。
出现如图类似情况。
C++代码如下:
void SocialUtils::screenshot()
{
int h = Director::getInstance()->getWinSize().height;
int w = Director::getInstance()->getWinSize().width;
int o_y = Director::getInstance()->getVisibleOrigin().y;
int o_x = Director::getInstance()->getVisibleOrigin().x;
CCLOG("w:%d--h:%d",w,h);
//定义一个屏幕大小的渲染纹理
RenderTexture *renderTexture = RenderTexture::create((int)(w*0.85), (int)(h*0.85), Texture2D::PixelFormat::RGBA8888);
Scene* getscene = Director::getInstance()->getRunningScene();
cocos2d::Point ancPos = getscene->getAnchorPoint();
cocos2d::Rect fullRect;
fullRect.setRect(o_x,o_y,w,h);
cocos2d::Rect virtualViewPort;
virtualViewPort.setRect(o_x,o_y,w,h);
renderTexture->setVirtualViewport(Vec2(o_x+w*0.18,o_y+h*0.2),fullRect,virtualViewPort);
//渲染纹理开始捕捉
renderTexture -> beginWithClear(0.0f, 0.0f, 0.0f, 0.0f);
//绘制当前场景
getscene-> visit();
renderTexture -> end();
//保存png
renderTexture -> saveToFile(StringUtils::format("screenshot.png"),Image::Format::PNG,true,[=](RenderTexture*,const std::string& m_path)
{
//保存完毕之后的回调
std::string path = FileUtils::getInstance()->getWriteablePath();
});
解决方法:
创建renderTexture的时候得调用
RenderTexture * RenderTexture::create(int w ,int h, Texture2D::PixelFormat eFormat, GLuint uDepthStencilFormat)
然后,指定最后一个参数为:
GL_DEPTH24_STENCIL8
将其改为:
RenderTexture *renderTexture = RenderTexture::create((int)(w*0.85), (int)(h*0.85), Texture2D::PixelFormat::RGBA8888,GL_DEPTH24_STENCIL8);
OK,问题解决。
- 关于 Cocos2d-x 3.x+截屏功能
- Cocos2d-x 3.0截屏功能集成
- Cocos2d-x 3.0截屏功能集成
- Cocos2d-x 3.0截屏功能集成
- cocos2d-x 3.2 截屏功能
- Cocos2d-x 3.0截屏功能集成
- [cocos2d-x]Cocos2d-x游戏截屏
- 【玩转cocos2d-x之三十九】Cocos2d-x 3.0截屏功能集成
- 【玩转cocos2d-x之三十九】Cocos2d-x 3.0截屏功能集成
- Cocos2d-x 截图功能
- cocos2d x 3.x
- cocos2d-x 打开url 和 截屏功能
- Cocos2d-x 2.2 and 3.2 截屏功能
- cocos2d-x 打开url 和 截屏功能
- Cocos2d-x 3.x中自定义渲染功能
- Cocos2d-x关于ScrollView
- 关于Cocos2d-x书籍
- 关于cocos2d-x
- TextInputLayout使用以及EditText自己实现监听
- 马云:如何组建自己的技术团队
- Servlet
- Mongo 3.X以上版本使用Robomongo无法查看Collections内容的问题解决
- 杂谈笔记 函数
- 关于 Cocos2d-x 3.x+截屏功能
- Android URI简介
- mysqldump 使用方法参数说明
- Snackbar的使用
- 每天一个linux命令(4):mkdir命令
- powerkey 到亮屏/关屏流程
- java代码质量检测评价工具
- 队列
- java开发——计算器开发