cocos2d spine 与 tmx相遇崩溃问题

来源:互联网 发布:mac中如何替换ppt模版 编辑:程序博客网 时间:2024/06/06 18:49

遇到一个问题,在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,记录之前的标志位,不同的才改变。

0 0
原创粉丝点击