在cocos2dx 3.x版本中,在某些情况下使用了spine骨骼动画和LayerColor,可能会导致在iphone6s,和iphone7真机上闪退,其他机型正常,xCode调试发现是在LayerColor::onDraw glDrawArrays(GLTRIANGLE_STRIP, 0, 4)这个方法中崩溃的,网上找到一篇国外开发者的解决方法,经过测试确实可用。(国外解决方法原文地址:https://github.com/cocos2d/cocos2d-x/issues/16543)
解决办法:
1、找到 PolygonBatch::flush这个方法;
2、将:
GL::bindVAO(0);
glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION);
glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR);
glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_TEX_COORDS);替换为:
GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POSITION | GL::VERTEX_ATTRIB_FLAG_COLOR | GL::VERTEX_ATTRIB_FLAG_TEX_COORD);
本文介绍了一个在Cocos2dx 3.x版本中使用Spine骨骼动画与LayerColor时导致iPhone 6s及iPhone 7闪退的问题,并提供了解决方案。该问题出现在特定机型上的原因在于LayerColor::onDraw 方法中的OpenGL调用,通过修改PolygonBatch::flush 方法中的顶点属性启用方式得以解决。
1950

被折叠的 条评论
为什么被折叠?



