关于Cocos2d-x3.2中ClippingNode的问题

首先,先谢谢进来的朋友。不管你能不能帮上我。

先附上我的代码:

请把代码粘贴在这里

bool CoverScene::init()
{
    if (!BaseScene::init())
    {
        return false;
    }

    auto bgSpr = Sprite::create("Background.png");
    bgSpr->setPosition(Point(m_size.width / 2, m_size.height / 2));
    this->addChild(bgSpr, 0);

    ClippingNode* clippingNode = ClippingNode::create();
    //设置裁剪区域大小  
    clippingNode->setContentSize(Size(200, 200));
    clippingNode->setAnchorPoint(Vec2(0.5f, 0.5f));
    clippingNode->setPosition(Vec2(m_size.width / 2, m_size.height / 2));
    this->addChild(clippingNode, 1);

    Sprite* sprite = CCSprite::create("HelloWorld.png");
    sprite->setPosition(Vec2(clippingNode->getContentSize().width / 2, clippingNode->getContentSize().height / 2));
    clippingNode->addChild(sprite, 1);

    DrawNode *stencil = DrawNode::create();
    Point rectangle;
    rectangle = Vec2::ZERO;
    rectangle = Vec2(clippingNode->getContentSize().width, 0);
    rectangle = Vec2(clippingNode->getContentSize().width, clippingNode->getContentSize().height);
    rectangle = Vec2(0, clippingNode->getContentSize().height);

    Color4F white = { 1, 1, 1, 1 };
    //画一个多边形 这画一个200x200的矩形作为模板  
    stencil->drawPolygon(rectangle, 4, white, 1, white);
    clippingNode->setStencil(stencil);

    //用来设置显示裁剪区域还是非裁剪区域的
    clippingNode->setInverted(false);//在裁剪区域内显示加入的内容  

    return true;
}


```



然后这个初始化, 在Win32和Android下是完全不同的显示样式


win32:
  





android:
  





这里有2个问题:
1、Android的裁切区域要比Win32下大。
2、Android中没有了背景的显示, 变成白色的, 只有裁切区域显示




我看网上有大大们说, 需要改Android下的代码。
this.mGLSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
我改了也没有效果。




还请大家帮帮忙

能看下你怎么改的

我没改好啊!!

有没有哪位大神知道原因啊。。

我也遇到同样的问题,不知道楼主找到解决办法了没

不知道楼主改对没有,是这里:

public class AppActivity extends Cocos2dxActivity {
    
    public Cocos2dxGLSurfaceView onCreateView() {
        Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
        // TestCpp should create stencil buffer
           glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
        
        return glSurfaceView;
    }
}
```