cocos2d-x之CCRenderTexture与glBlendFunc学习
1. CCRenderTexture.
cocos2d系列引擎中有一个很酷的类,叫做CCRenderTexture,云寻我们创建动态纹理,并且在游戏中重用这些纹理。
这里有一篇使用cocos2d的CCRenderTexture创建动态纹理的教程,可以先看一下:http://www.raywenderlich.com/3857/how-to-create-dynamic-textures-with-ccrendertexture
使用 CCRenderTexture 需要做以下5步就行:
1) 创建一个新的CCRenderTexture. 这里,你可以指定将要创建的纹理的宽度和高度。.
2) 调用 CCRenderTexture:begin. 这个方法会启动OpenGL,并且接下来,任何绘图的命令都会渲染到CCRenderTexture里面去,而不是画到屏幕上。.
3) 绘制纹理. 你可以使用原始的OpenGL调用来绘图,或者你也可以使用cocos2d对象里面已经定义好的visit方法。(这个visit方法就会调用一些opengl命令来绘制cocos2d对象)
4) 调用 CCRenderTexture:end. 这个方法会渲染纹理,并且会关闭渲染至CCRenderTexture的通道。.
5) 从生成的纹理中创建一个sprite.你现在可以用CCRenderTexture的sprite.texture属性来轻松创建新的精灵了。
CCRenderTexture* darknessLayer = CCRenderTexture::create(480, 320);
darknessLayer->setPosition(240, 160);
this->addChild(darknessLayer, 0, TAG_DARKNESS_LAYER);
//Clear the darkness layer for redrawing. Here we clear it to BLACK with 90% opacity.
darknessLayer->clear(0.0f, 0.0f, 0.0f, 0.9f);
//Begin the darkness layer drawing routine. This transforms to the proper location, among other things.
darknessLayer->begin();
//Limit drawing to the alpha channel.
glColorMask(0.0f, 0.0f, 0.0f, 1.0f);
//Reset glColorMask to allow drawing of colors.
glColorMask(1.0f, 1.0f, 1.0f, 1.0f);
CCRenderTexture类似一张空白的“画布“,用户通过自定义笔刷(CCSprite*),在touch事件中把笔刷的移动痕迹“记录”起来,从而“画”出各种艺术效果。记录方法很简单,首先CCRenderTexture调用自己的begin()函数,开启“记录”功能,然后调用笔刷->visit()把自己”画“在这张画布上,最后CCRenderTexture调用end()结束记录,那就OK了。
2. glBlendFunc或ccBlendFunc
当你不懂得怎样搭配效果更好时,这个网站会也许是你需要的:http://www.andersriggelsen.dk/glblendfunc.php

浙公网安备 33010602011771号