ccimage from cctexture2d

Hi,

is it possible to make ccimage from cctexture2d ?

Thanks.

Yes, you can render cctexture2d with CCRenderTexture and than read it as CCImage using standard CCRenderTexture interface (saveToFile or newImage).

There are no other ways because OpenGL ES has no function to get texture data directly (however it exists on desktop OpenGL) and EGL is a very complicated and unreliable way.

Hi,

Thanks for your reply…

I tried using CCRenderTexture like,

CCRenderTexture* pref = CCRenderTexture::create(texSize.width, texSize.height);
pref~~>setSpritetexture));
pref~~>saveToFile(path.data());

texture is the cctexture2d object which I want to convert to ccimage(for saving).
But this code is saving an empty image.

Can you please help me out?
Thanks.

CCRenderTexture uses OpenGL framebuffer object: it renders part of scene to selected buffer instead of screen buffer, and user can read FBO pixels or take it texture later. So you should not call setSprite, you should render own sprite after FBO was binded.

CCSprite *temporarySprite = CCSprite::createWithTexture(tex);
CCRenderTexture *rt = CCRenderTexture::create(texSize.width, texSize.height);
rt->begin();
// visit() draws sprite to framebuffer (not to screen) 
temporarySprite->visit();
rt->end();
// Use relative path instead of absolute.
rt->saveToFile("snapshot.png", kCCImageFormatPNG);

Thank You very much, that solved my problem. :slight_smile: