我用ccclipingnode将球分成两部分。但我发现我需要创建空的ccclipingnode或者修剪奇怪的东西。
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()));
答案 0 :(得分:0)
这是解决方案:http://blog.csdn.net/jusnxie/article/details/9277121
转到CCClippingNode :: visit函数,找到“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);”到了正确的位置。