方法1: 使用stencil buffer 可惜我ogl不太熟悉
方法2: 使用rendertexutre
CCSize maskSize = spMask->getContentSize();
CCRenderTexture* renderTex = CCRenderTexture::create( maskSize.width, maskSize.height, kCCTexture2DPixelFormat_RGBA8888 );
if( NULL == renderTex )
{
CCLog("%s[%d]:create render texture failed!", __FILE__, __LINE__ );
return NULL;
}
CCLog("%s[%d]:create render texture, width=%d, height=%d, format=kCCTexture2DPixelFormat_RGBA8888.", __FILE__, __LINE__, maskSize.width, maskSize.height );
spOrig->setTextureRect( RectOrig );
renderTex->begin();
spOrig->visit();
spMask->setBlendFunc( BlendMask );
spMask->visit();
renderTex->end();
这样绘制出来的RenderTex就可以使用getSprite()或者直接绘制了
spOrig 是绘制在后面的精灵
spMask 是蒙板精灵
方法3:使用shader
这个比较简单 就是在片段着色器里面 比较tex1 和tex2的颜色来进行绘制,但是需要纹理对齐.