cocos2dx中精灵设置hue等问题

近期记录

刚开始没有看quick的时候按照http://www.cocoachina.com/bbs/read.php?tid-302467.html的方式扩展了一下sprite使其拥有hue的功能。

但是,通过反复大量创建发现,GLProgramState在sprite析构后并没有在短时间内被清理,具体原因未知~可能是autorelease慢也可能是直接内存泄露了~

对了我使用的是cocos3.3版本。


然后发现quick中的filter本身就有hue的shader方法,于是乎寄希望于quick能处理好内存这一块,但是除了发现内存还是一样有问题以外,

似乎所有的sprite的hue都会变成最后设置的那一次。看了下filter类,发现在initProgram中设置_pProgramState使用的是

GLProgramState::getOrCreateWithGLProgram。这个方法就会让使用同一个shader的的sprite调用的同一个filter。


针对以上问题,改成GLProgramState::create即可让每一个sprite拥有独立的GLProgramState,实际测试发现大量sprite设置hue的时候会

稍微卡顿一下,内存稍微高一点,但是影响也不大。所以很疑惑quick为什么要使用getOrCreateWithGLProgram这个方法或者说

没有支持传参来选择构造的方法,难道是因为GLProgramState真的会导致内存泄露?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值