Cocos2d-x V3.2.使用 RenderTexture 创建精灵
Cocos2d-x V3.2. Create sprite with RenderTexture
我有问题。
我正在尝试制作一个场景的屏幕截图,然后制作一个精灵并将这个精灵传递给其他场景。我正在这样做:
RenderTexture* texture = RenderTexture::create((int)Director::getInstance()->getWinSize().width, (int)Director::getInstance()->getWinSize().height, Texture2D::PixelFormat::RGBA8888);
texture->begin();
Director::getInstance()->getRunningScene()->visit();
texture->end();
Sprite* bgSprite = Sprite::createWithTexture(texture->getSprite()->getTexture());
bgSprite->setRotationX(180);
/-------------------------------------
LoadScreen* loadLayer = LoadScreen::create(GameScene, this->_carModel, bgSprite/*, this*/);
/-------------------------------------
然后在下一个场景中,我做到了:
bgSprite->setPosition(Point(Director::getInstance()->getVisibleSize().width / 2, Director::getInstance()->getVisibleSize().height / 2));
bgSprite->setOpacity(200);
this->addChild(bgSprite, 1, 1);
我调试这个。精灵不为空。这个精灵中的纹理有大小等。我尝试将 texure 保存在文件中。结果是空.png文件。
这是一个引擎问题,文件在以前的版本中始终使用 RGB 保存。
由于 cocos2d-x 3.0 的渲染是基于命令队列的,因此我们应该始终使用命令包装读/写帧缓冲区操作。直接调用 newImage(( 并不能保证正常工作。但是"RenderTexture::saveToFile"应该可以正常工作,因为它在代码中包装了自定义命令。
我认为这个问题已经在 cocos2d-x v3.3 中解决了,有关更多信息,请参阅 http://www.cocos2d-x.org/issues/5562。
你也可以看看与cocos2d-x捆绑在一起的"cpp-tests",看看如何保存你的场景或精灵的截图。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- 我已经创建了一个精灵的否,并以相同的参考将它们添加到场景中,现在,如何使用标签删除它们
- 如何使用Cocos2D-X中的精灵表创建菜单
- 使用sf::Sprite创建精灵对象
- Cocos2d-x V3.2.使用 RenderTexture 创建精灵
- 如何创建精灵无法通过的边界框
- 如何刷新精灵(删除并重新创建)
- cocos2d-x 3.0 -创建精灵的相对路径
- 在box2d中为精灵创建b2body
- 我正在创建一系列精灵,它们应该随机出现,但它发生了
- 我正在创建精灵数组出错
- SFML 2.1使用矢量创建多个精灵的完整说明