CCClippingNode导致的贴图错误问题

此问题我的原文和解决办法:

http://stackoverflow.com/questions/28367881/why-i-need-add-empty-ccclippingnode-between-each-slice-part-in-cocos2dx-2-2-6/28367882#28367882

帮助贴:

http://blog.csdn.net/jusnxie/article/details/9277121


起先我发现切割图片的贴图错误了, 但是找不到问题在哪. 于是我自己来回测试, 发现每隔一个CCClippingNode创建一个空的CCClippingNode就不会出现这个问题, 于是我发现了是openGL缓存的问题, 




另外stencil深度需要开启, cpp项目在AppController.mm中, 默认新版模板是开启的, 老版模板是关闭的, 所以我发现我的demo能运行, 而老游戏不支持:


改为


EAGLView *__glView = [EAGLView viewWithFrame: [window bounds]
                                     pixelFormat: kEAGLColorFormatRGB565
                                     depthFormat: GL_DEPTH24_STENCIL8_OES
                              preserveBackbuffer: NO
                                      sharegroup: nil
                                   multiSampling: NO
                                 numberOfSamples:0 ];





  1.     glStencilFunc(GL_NEVER, mask_layer, mask_layer);  
  2.     glClearStencil(!m_bInverted ? 0 : ~0);  
  3.     glStencilOp(!m_bInverted ? GL_ZERO : GL_REPLACE, GL_KEEP, GL_KEEP);  
  4.       
  5.     // draw a fullscreen solid rectangle to clear the stencil buffer  
  6.     //ccDrawSolidRect(CCPointZero, ccpFromSize([[CCDirector sharedDirector] winSize]), ccc4f(1, 1, 1, 1));  
  7.     ccDrawSolidRect(CCPointZero, ccpFromSize(CCDirector::sharedDirector()->getWinSize()), ccc4f(1, 1, 1, 1));  
  8.     glClear(GL_STENCIL_BUFFER_BIT);  

标红的地方是新添加的, 效果刚刚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值