我有个问题。
我正在尝试制作一个场景的屏幕截图,然后制作一个精灵并将该精灵传递给其他场景。
我正在这样做:
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);
我调试这个。 Sprite不为null。此精灵中的纹理具有大小等。
我尝试将texure保存在文件中。结果为空的.png文件。
最佳答案
这是引擎问题,该文件始终以RGB格式保存在以前的版本中。
由于cocos2d-x 3.0的呈现基于命令队列,因此我们应始终使用命令包装读/写帧缓冲区操作。不保证直接调用newImage()可以正常工作。但是“RenderTexture::saveToFile”应该可以正常工作,因为它是用代码中的自定义命令包装的。
我认为此问题已在cocos2d-x v3.3中解决,请参阅http://www.cocos2d-x.org/issues/5562以获取更多信息。
另外,您还可以看一下与cocos2d-x bundle 在一起的“cpp-tests”,以了解如何保存场景或精灵的屏幕截图。
关于c++ - Cocos2d-x V3.2。使用RenderTexture创建 Sprite ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27520628/