2015-02-06 46 views
0

我用ccclipingnode将球分成两部分。但我发现我需要创建空ccclipingnode或将剪辑奇怪。为什么我需要在每个切片部分之间添加空ccclippingnode?

if(new1VecsCount>=3)addChild(Box2dItemSlice::createSliceBody(box->box2dBody->GetPosition(), box->box2dBody->GetAngle(), new1VecsSorted, new1VecsCount,pRot1)); 
addChild(CCClippingNode::create(CCNode::create())); 
if(new2VecsCount>=3)addChild(Box2dItemSlice::createSliceBody(box->box2dBody->GetPosition(), box->box2dBody->GetAngle(), new2VecsSorted, new2VecsCount,pRot2)); 
addChild(CCClippingNode::create(CCNode::create())); 

enter image description here enter image description here

回答

0

这里是解决方案:http://blog.csdn.net/jusnxie/article/details/9277121

转到CCClippingNode ::访问功能,找到 “ccDrawSolidRect” 行,并修改:

glStencilFunc(GL_NEVER, mask_layer, mask_layer); 
glStencilOp(!m_bInverted ? GL_ZERO : GL_REPLACE, GL_KEEP, GL_KEEP); winSize]), ccc4f(1, 1, 1, 1)); 
ccDrawSolidRect(CCPointZero, ccpFromSize(CCDirector::sharedDirector()->getWinSize()), ccc4f(1, 1, 1, 1)); 

变化:

glStencilFunc(GL_NEVER, mask_layer, mask_layer); 
glClearStencil(!m_bInverted ? 0 : ~0); 
glStencilOp(!m_bInverted ? GL_ZERO : GL_REPLACE, GL_KEEP, GL_KEEP); winSize]), ccc4f(1, 1, 1, 1)); 
ccDrawSolidRect(CCPointZero, ccpFromSize(CCDirector::sharedDirector()->getWinSize()), ccc4f(1, 1, 1, 1)); 
glClear(GL_STENCIL_BUFFER_BIT); 

你只需要添加“glClearStencil(!m_bInverted? 0:〜0);“和”glClear(GL_STENCIL_BUFFER_BIT);“在正确的位置

相关问题