Sprite
に基づいて、白黒のSprite
を作成しようとしています。私はスプライトのピクセルデータを作成してキャッシュした後にアクセスできないので、それに基づいて新しいImage
を作成し、画像データを変更してをTexture
に変換してから最後にSprite
もう一度、今は白黒です。RenderTextureが作成した画像が表示されません
RenderTexture
から生成されたImage
を使用すると、実際には描画されませんが、後でRenderTexture::saveToFile
で生成された画像を使用すると問題なく動作します。私はちょうど罰金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を使用しています、私は多分、これはバグだと思うし、それは解決されるだろう私はCocos CreatorにC++サポートを追加するまで立ち往生しています。 – TankorSmash