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

不错不错,真是造福大家啊!

这种方式draw Call会很高

楼主叼炸天了

:2: :2: :2: :2: :2: :2: :2: :2:

fragment shader , rgb都调成一样应该就可以了。setCoior不就好了么?

=。= github而已。。。

不行的话架个梯子。。。

感谢指正,已修复。

引擎版本3.5。

赞 感谢LZ分享 。。。。。。。。。

很赞的效果 试试看~

之前看到过,但是现在用不到 但是的确好东西,希望加入在cocos2dx 内引入该功能

很牛,瞬间变脸!

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。