利用CCRendTexture,我们可以动态的渲染纹理,效果很好看,先给例子代码吧,看了网上的一些例子,我都没法掌握(我自己太笨的缘故):
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCLayerColor *layercolor = CCLayerColor::create(ccc4(200, 200, 200, 255));
this->addChild(layercolor, 1);
CCSprite *sprite = CCSprite::create("b1.png");
CCRenderTexture *render = CCRenderTexture::create(400, 400, kTexture2DPixelFormat_RGBA8888);//创建一个Render
//render->beginWithClear(200, 200, 200, 255);
/*
@add a sprite
*/
render->begin();
sprite->visit();//主意顺序了,不要在这里创建Sprite,否则的话,它会话不出来,因为会不停的创建和vist
render->end();
sprite->setAnchorPoint(ccp(0.5f, 0.5f));
sprite->setPosition(ccp(size.width / 2.0f - 16, size.height / 2.0f - 16));
render->setPosition(ccp(0.5f, 0.5f));
render->setPosition(ccp(size.width / 2.0f + 16, size.height / 2.0f));
this->addChild(sprite, 1);
this->addChild(render, 1);
bool bSaved = render->saveToFile("MyFile.jpg", kCCImageFormatJPEG);// 最后是保存文件了,它会保存当前的Render的scene,主意这里的第一个参数
第一个参数的扩展名只能是png,和jpg,因为源码只提供这两种,否则会保存文件失败的。
我有点搞不清楚的是,再cocos2dx中,它所提供的文档明明说不推荐jpg文件的使用,而这里却搞这样的,不是很明白用途是什么,这个得好好研究一下。