我試圖根據另一個Sprite
創建黑色和白色Sprite
。由於在創建和緩存後我無法訪問精靈像素數據,因此我正在通過創建基於該精確像素數據的新Image
,然後更改圖像數據,然後將Image
變成Texture
,然後最終成爲再次,現在是黑色和白色。RenderTexture創建的圖片不可見
問題是,當我使用從RenderTexture
生成的Image
,它實際上並沒有繪製它,但是當我使用RenderTexture::saveToFile
後生成的PNG圖像時,它工作正常。
好像我應該能夠看到在scene
就好output_sprite
,因爲它正在修建同樣的方式,唯一的區別是Image
從盤與從RenderTexture
權上的現有文件構建。
cocos2d::Sprite* anvil_sprite = cocos2d::Sprite::createWithSpriteFrameName("anvil.png");
anvil_sprite->setAnchorPoint(Vec2::ZERO);
anvil_sprite->setPosition(0,0);
RenderTexture* rt = RenderTexture::create(anvil_sprite->getContentSize().width, anvil_sprite->getContentSize().height);
rt->begin();
anvil_sprite->visit();
rt->end();
//generates a file so I can confirm it's generating correctly in the OS's
//image viewer
rt->saveToFile("test_FILE.png");
Image* output_image = new Image;
// Either use the png generated from a previous run's RenderTexture (which works)
// or use a new Image generated on this run.
// If I use the existing png, this works as intended, but I'd like to be
// able to use the texture I generate right away instead of needing to save
// it to disk first
/* OPTION A */
output_image->initWithImageFile("test_FILE.png"); // works
/* OPTION B */
output_image = rt->newImage(); //doesn't render anything
auto output_texture = new Texture2D;
output_texture->initWithImage(output_image);
Sprite* output_sprite = cocos2d::Sprite::createWithTexture(output_texture);
scene->addChild(output_sprite);
超越它在Sprite
在使用前也許GPU沒有機會呈現出質感,我真的不知道發生了什麼事情發生。我正在尋找選項A和B以同樣的方式呈現,但是現在只有那個已經存在的文件作爲Image
的源代碼正在工作。
我使用的是V3.10,我想,也許這是一個錯誤,它會被解決補間現在和v3.14,但我堅持下去,直到他們將C++支持添加到Cocos Creator。 – TankorSmash