【问题标题】:Cocos2d-x V3.2. Create sprite with RenderTextureCocos2d-x V3.2。使用 RenderTexture 创建精灵
【发布时间】:2014-12-17 07:50:45
【问题描述】:

我有问题。

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

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);

我调试这个。精灵不为空。这个精灵中的纹理有大小等。 我尝试将纹理保存在文件中。结果是空的 .png 文件。

【问题讨论】:

    标签: c++ cocos2d-x


    【解决方案1】:

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

    由于 cocos2d-x 3.0 的渲染是基于命令队列的,所以我们应该总是用命令包装读/写帧缓冲区操作。不能保证直接调用 newImage() 可以正常工作。但是“RenderTexture::saveToFile”应该可以正常工作,因为它是用代码中的自定义命令包装的。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多