遮罩层 CCClippingNode Stencil buffer is not enabled (ios/android)

6 篇文章 0 订阅
5 篇文章 0 订阅

用途:

做新手教程,周围较暗,然后高亮一个位置。

示例代码:

 
   CCLayerColor *player = CCLayerColor::create(ccc4(0, 0, 0, 110));
   
    CCClippingNode *pclip = CCClippingNode::create();
    pclip->setInverted(true);
    layer->addChild(pclip);
    pclip->addChild(player);
   
    static ccColor4F red = { 1, 0, 0, 1 };
    float radius = 55.0f;
    const int nCount = 200;
    const float angel = 2.0f * (float)M_PI / nCount;
    static CCPoint circle[nCount];
    for (int i = 0; i < nCount; i++) {
        float radian = i * angel;
        circle[i].x = radius * cosf(radian);
        circle[i].y = radius * sinf(radian);
    }
    CCDrawNode *pStencil = CCDrawNode::create();
    pStencil->drawPolygon(circle, nCount, red, 0, red);
    pStencil->setPosition(ccp(200, 200));
    pclip->setStencil(pStencil);



==========

当出现Stencil buffer is not enabled时,作如下修改即可

iOS:
AppController.mm
depthFormat: GL_DEPTH_COMPONENT16
==> depthFormat: GL_DEPTH24_STENCIL8_OES
EAGLView *__glView = [EAGLView viewWithFrame: [window bounds]
                                     pixelFormat: kEAGLColorFormatRGBA8
                                     depthFormat: GL_DEPTH24_STENCIL8_OES
                              preserveBackbuffer: NO
                                      sharegroup: nil
                                   multiSampling: NO
                                 numberOfSamples: 0 ];

Android:
Cocos2dxGLSurfaceView.java
public Cocos2dxGLSurfaceView(final Context context) {
          super(context);

          this.initView();


          this.setEGLConfigChooser(5, 6, 5, 0, 16, 8); // add this
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值