SpriteWithHue,通过修改色调实现资源复用

很牛,瞬间变脸!

hi,问个问题,不知道楼主有没有测试,通过这个类创建精灵后添加到界面上,然后调用移除精灵的方法,内存是不会下降的,反而添加一次增加一次,只增加不减少。楼主有解决的方法吗?
代码如下:
添加精灵代码:
Size visibleSize = Director::getInstance()->getVisibleSize();
if (!m_node) {
m_node = Node::create();
this->addChild(m_node);
m_node->setContentSize(Size(Vec2(visibleSize.width, visibleSize.height)));
}
for (int i = 0; i < 30; i++) {
auto spriteWithHue = SpriteWithHue::create(“ball_red.png”);
spriteWithHue->setPosition(Vec2(rand_0_1() * visibleSize.width, rand_0_1() * visibleSize.height));
spriteWithHue->setHue(M_PI * 2 * rand_0_1());
m_node->addChild(spriteWithHue);
}

移除精灵方法:
if (m_node) {
m_node->removeAllChildrenWithCleanup(false);
m_node->removeFromParent();
m_node = nullptr;
}

mark:2::2::2::2:

好东西马克一下:14:

看看效果
1!!

好东西,顶一个

偷个懒,直接用封装好的,嘿嘿

看起来好像不错的样子。。。。。

嗯。看了下确实有这个问题,查了下主要是2个问题导致内存没降下来。

1.GLProgramStateCache每次都会缓存program state,这部分,直接调用

void GLProgramStateCache::removeUnusedGLProgramState()即可。

2.GLProgram创建后,即使析构了内存也降不下来。这部分不太清楚,先建了个issue给引擎。

https://github.com/cocos2d/cocos2d-x/issues/12138

这块得等引擎fix。

谢谢楼主了, :14:

好东西!!!!!!!!!

谢谢伟大的楼主大人

看下不错不错!!!!

看看~看看~看看~看看~

挺不错的,碉堡了啊!!

不错不错!!!!

叼!!!!!!

:14: 碉堡了

怎么android打包编译不过去啊?

不错不错!!!