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

posted @ 2013-04-27 22:15  gumcstronger  阅读(1725)  评论(0)    收藏  举报