cocos2d spine 与 tmx相遇崩溃问题
2016-07-05 22:59
411 查看
遇到一个问题,在spine动画播放完后,添加tmx地图,在低端机上会崩溃。找了半天,又是cocos2d的坑。在此记录下。
在spine的PolygonBatch::flush中
上面启用了三种属性,而在tmx中只启用了顶点和纹理两个属性。因此,当spine销毁后,tmx会继续使用spine的颜色数据。(猜测opengl的数据并不是立即销毁,而是不够用了再销毁,因此显存大的机子没问题。)
修改方案:
把上面的代码替换成以下。
其实,在GL::enableVertexAttribs中,就已经有对全部的属性遍历一遍,改enable的enable,该diable的disable。只是这函数中用了s_attributeFlags,记录之前的标志位,不同的才改变。
在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,记录之前的标志位,不同的才改变。
相关文章推荐
- cocos2dx骨骼动画Armature源码剖析(一)
- cocos2dx骨骼动画Armature源码剖析(二)
- 剖析iOS开发中Cocos2d-x的内存管理相关操作
- 详解iOS游戏开发中Cocos2D的坐标位置关系
- iOS 5 cocos2d 游戏开发 3ff8 实战:第4章 你的第一个游戏
- quick-cocos2d-x for mac开发环境安装配置
- 阅读 KBEngine 要理清的问题
- KBEngine 编译、运行、调试
- KBEngine Cocos2d JS 客户端启动过程
- KBEngine 客户端-loginapp-协议加载
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- Cocos Studio的动画系统介绍
- OGEngine新版发布,推开发者服务平台
- Cocos2d 中 fnt文件生产工具 Bitmap Font Generator
- CCLOG调试方法与参数说明
- 你的第一个cocos2d游戏