gpt4 book ai didi

c++ - Cocos2d-x V3.2。使用 RenderTexture 创建 Sprite

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:20 30 4
gpt4 key购买 nike

我有一个问题。

我正在尝试制作一个场景的屏幕截图,然后制作一个 Sprite 并将这个 Sprite 传递给其他场景。我这样做:

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 不为空。这个 Sprite 中的纹理有大小等。我尝试将纹理保存在文件中。结果是空的 .png 文件。

最佳答案

是引擎的问题,之前的版本都是用RGB保存的。

由于cocos2d-x 3.0的渲染是基于command queue的,所以我们应该始终将读写frame buffer的操作用command包裹起来。直接调用 newImage() 不能保证工作正常。但是“RenderTexture::saveToFile”应该可以正常工作,因为它在代码中包含了自定义命令。

我认为这个问题在cocos2d-x v3.3中已经解决了,请引用http://www.cocos2d-x.org/issues/5562获取更多信息。

您还可以查看与 cocos2d-x 捆绑在一起的“cpp-tests”,了解如何保存场景或 Sprite 的屏幕截图。

关于c++ - Cocos2d-x V3.2。使用 RenderTexture 创建 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520628/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com