新的filteredSprite会影响以前创建的

一段测试代码

display.newSprite(“dai.png”):pos(display.cx-300,display.cy):addTo(self)
display.newFilteredSprite(“dai.png”,“BRIGHTNESS”,{0.5}):pos(display.cx-200,display.cy):addTo(self)
–display.newFilteredSprite(“dai.png”,“BRIGHTNESS”,{-0.5}):pos(display.cx-100,display.cy):addTo(self)

分别运行"第三行注释的" 和 “第三行解注释的”

可以看到 第二个精灵的亮度会受第三个的影响

既然是new出来的,为什么会对别的精灵有影响?

版本:quick3.5final

人工置顶一下 没人知道么

人工置顶
人工置顶
人工置顶

人工置顶
人工置顶
人工置顶

遇到相同的问题。然而并没有找到答案……有大侠愿意分享下解决办法么?

这个问题应该是 filteredSprite 和 cocos 3.x 的 auto batch 机制不兼容。

auto batch 是根据多个 sprite 是否使用同一个 texture 来决定的。如果两个 sprite 使用同一个 texture,但应用了 filteredSprite ,那么就会出现这个问题。

这个问题暂时无法解决。

这个问题大概是因为这样的,FilterSprite的GLProgramState是从GLProgramStateCache里面取出来的,而不是根据GLProgram单独创建的,所以所有的同类型FilterSprite用的是同一个GLProgramState,所以他们会互相影响。
如果是这个原因的话,你可以自己创建一个GLProgramState设置到FilterSprite