cocos2d-x学习笔记(四)粒子系统使用中多次调用时GL calls不断增加的解决办法

cocos2d-x学习笔记(四)粒子系统使用中多次调用时GL calls不断增加的解决办法,第1张

概述今天在编写一个射击类的游戏时用到粒子系统,点击屏幕发射***打中敌机后产生爆炸的粒子效果,以为快要完工的时候,发现每次产生爆炸效果GL calls(每一帧中openGL指令的调用次数)就增加一次,在手机运行肯定出问题,经过仔细分析发现确实是粒子系统没有被移除的原因。 开始的程序如下: //根据 plist 文件创建粒子系统ParticleSystem* m_emitter1 = Particle

今天在编写一个射击类的游戏时用到粒子系统,点击屏幕发射***打中敌机后产生爆炸的粒子效果,以为快要完工的时候,发现每次产生爆炸效果GL calls(每一帧中openGL指令的调用次数)就增加一次,在手机运行肯定出问题,经过仔细分析发现确实是粒子系统没有被移除的原因。

开始的程序如下:

@H_404_4@
//根据pList文件创建粒子系统ParticleSystem*m_emitter1=ParticleSystemQuad::create("boom.pList");m_emitter1->retain();ParticleBatchNode*batch=ParticleBatchNode::createWithTexture(m_emitter1->getTexture());batch->addChild(m_emitter1);m_emitter1->setposition(pos);//设置发射粒子的位置addChild(batch,10);m_emitter1->release();

网上找了很久没找到解决方法,无意间发现CCParticleSystemQuad粒子系统有setautoRemoveOnFinish这个函数,就拿来试了下,结果还真的可行。setautoRemoveOnFinish是完成后移除粒子系统的意思。

修改后的代码如下:

//读取粒子效果ParticleSystem*m_emitter1=ParticleSystemQuad::create("boom.pList");m_emitter1->retain();ParticleBatchNode*batch=ParticleBatchNode::createWithTexture(m_emitter1->getTexture());batch->addChild(m_emitter1);m_emitter1->setposition(pos);//设置发射粒子的位置m_emitter1->setautoRemoveOnFinish(true);//完成后制动移除//emitter1->setDuration(10);//设置粒子系统的持续时间秒addChild(batch,10);m_emitter1->release();

emitter1->setDuration(10);这段代码被我注释掉了,由于我制作的boom.pList爆炸粒子系统就一段时间,所以就没加上这段代码,如果是持续性的粒子系统那就看需要展示多久移除了。

总结

以上是内存溢出为你收集整理的cocos2d-x学习笔记(四)粒子系统使用中多次调用时GL calls不断增加的解决办法全部内容,希望文章能够帮你解决cocos2d-x学习笔记(四)粒子系统使用中多次调用时GL calls不断增加的解决办法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存