您的位置:首页 > 移动开发 > Cocos引擎

cocos2d spine 与 tmx相遇崩溃问题

2016-07-05 22:59 411 查看
遇到一个问题,在spine动画播放完后,添加tmx地图,在低端机上会崩溃。找了半天,又是cocos2d的坑。在此记录下。

在spine的PolygonBatch::flush中

GL::bindVAO(0);
glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION);
glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR);
glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_TEX_COORDS);


上面启用了三种属性,而在tmx中只启用了顶点和纹理两个属性。因此,当spine销毁后,tmx会继续使用spine的颜色数据。(猜测opengl的数据并不是立即销毁,而是不够用了再销毁,因此显存大的机子没问题。)

修改方案:

把上面的代码替换成以下。

GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POSITION | GL::VERTEX_ATTRIB_FLAG_TEX_COORD | GL::VERTEX_ATTRIB_FLAG_COLOR);


其实,在GL::enableVertexAttribs中,就已经有对全部的属性遍历一遍,改enable的enable,该diable的disable。只是这函数中用了s_attributeFlags,记录之前的标志位,不同的才改变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d