版本2.4.4,测试平台Web
在对Texture设置FlipY,PremultiplyAlpha这两个参数后执行ccTexture2D的update,此时需要updateImg,web平台使用了bitmap,问题在于传入_checkImageBitmap的回调函数中所带的参数options是Texture2D的SharedOptions,而不是对象的拷贝,此处不懂为什么这么做,猜测是出于GC上的优化。
当bitmap加载完成后执行回调_upload,在options中两个参数,一个是bitmap类型的image,一个是bitmap[]类型的images。upload开始的时候将这次加载的bitmap赋值给了option的image,这表明这个属性里面的数据是正确的。对Images的疑惑如下图所示
后续的接口调用中,在调webgl接口前有个setMipmap,里面又重新构造了一个options,然后将images数组里面的数据赋值给了options的image。
最终导致如果在同一时刻批量修改好几张图片的alpha预乘或者Y翻转(比如加载了几张龙骨的纹理,并且要设置alpha预乘),最终提交到GPU的纹理全都变成同样的纹理。sprite也显示出了同样的图片