现在我们将重新认识一下RenderTexture。在TestCpp中它做为独立的演示场景存在,名称为RenderTextureTest。我们先来看一下最重要的类CCRenderTexture。它是用于管理渲染目标纹理的类,与纹理不同的是,它必须是属于
打开CCRenderTexture.h:
- //图像格式枚举,可以保存为JPG和PNG两种格式
- typedefenumeImageFormat
- {
- kCCImageFormatJPEG=0,
- kCCImageFormatPNG=1,
- }tCCImageFormat;
- //由结点派生
- classCC_DLLCCRenderTexture:publicCCNode
- //精灵成员变量及存取接口
- CC_PROPERTY(CCSprite*,m_pSprite,Sprite)
- public:
- //构造
- CCRenderTexture();
- //析构
- virtual~CCRenderTexture();
- //创建一个渲染目标纹理。参数指定大小,像素格式和深度模板缓冲格式。内部调用create实现。
- CC_DEPRECATED_ATTRIBUTEstaticCCRenderTexture*renderTextureWithWidthAndHeight(intw,inth,CCTexture2DPixelFormateFormat,GLuintuDepthStencilFormat);
- //创建一个渲染目标纹理。参数指定大小,像素格式。内部调用create实现。
- //创建一个渲染目标纹理。参数指定大小.。内部调用create实现。
- inth);
- //第一个函数的create实现。
- staticCCRenderTexture*create(//第二个函数的create实现。
- //第三个函数的create实现。
- inth);
- //初始化,参数为大小和像素格式。
- boolinitWithWidthAndHeight(//初始化,参数为大小和像素格式,深度模板缓冲格式。
- //开始渲染到当前目标纹理。
- voidbegin();
- //清空颜色缓冲的值为指定值。
- voidbeginWithClear(floatr,87); background-color:inherit">floatg,87); background-color:inherit">floatb,87); background-color:inherit">floata);
- //清空颜色缓冲和深度的值为指定值。
- floata,87); background-color:inherit">floatdepthValue);
- //清空颜色缓冲和深度,模版值缓冲的值为指定值。
- floatdepthValue,87); background-color:inherit">intstencilValue);
- //LUA中调用的结束函数。
- inlinevoidendToLua(){end();};
- //结束渲染到当前目标纹理。
- voidend();
- //清空目标纹理的颜色为指定色
- voidclear(floata);
- //清空目标纹理的深度值
- voidclearDepth(floatdepthValue);
- //清空目标纹理的模板缓冲值
- voidclearStencil(intstencilValue);
- //由目标纹理的数据产生出CCImage实例。
- CCImage*newCCImage();
- //保存目标纹理到相应图片文件。
- boolsaveToFile(constchar*szFilePath);
- //保存目标纹理到相应图片文件,指定图像格式。
- char*name,tCCImageFormatformat);
- //监听消息,保存目标纹理。
- voidlistenToBackground(CCObject*obj);
- protected:
- //FBO对象,即帧缓冲区,一帧中像素数据保存的缓冲区域。可参看http://www.cnblogs.com/aokman/archive/2010/11/14/1876987.html
- GLuintm_uFBO;
- //深度缓冲。
- GLuintm_uDepthRenderBufffer;
- //保存旧的FBO对象。
- GLintm_nOldFBO;
- //使用的纹理。
- CCTexture2D*m_pTexture;
- //用于保存当前纹理数据的可变纹理对象。
- CCImage*m_pUITextureImage;
- //像素格式
- GLenumm_ePixelFormat;
- };
然后是CPP:
copy