Take any image that has transparent pixels in it and try to save it as a png using renderTexture. The transparent pixels will get added with the background color of the renderTexture despite setting the background’s alpha channel to zero with clear(0,0,0,0). Below is the code I used:
auto sprite = Sprite::create("original.png"); auto renderTexture = RenderTexture::create(64, 64, Texture2D::PixelFormat::RGBA8888); renderTexture->clear(0,0,0,0); renderTexture->begin(); sprite->setAnchorPoint(Vec2(0, 0)); sprite->setPosition(Vec2(0,0)); sprite->visit(); renderTexture->end(); renderTexture->saveToFile("rendertexture.png", Image::Format::PNG);
So in the above case because I cleared with rgba(0,0,0,0), my transparent pixels will end up being darker. One would assume that having an alpha of zero shouldn’t change the image at all.
Here is an example of the effect. The first image is my original, a square with the light green color rbga(55,255,0,100). The second image is the renderTexture image I get after running the above code. You can see it is now a dark green color rgba(21,100,0,100).