谢谢回复。
我觉得cocos默认使用BlendFunc::ALPHA_PREMULTIPLIED是在cpu上计算混合,所以先预乘一下。
一般混合是{SRC_ALPHA,ONE_MINUS_ALPHA}交给openGL利用gpu后乘(对应预乘)处理最终的颜色。
所以预乘跟显示效果是有关系的。
最后我问的白边问题,我是觉得按理说不管预乘与否都不应该出现白边啊,因为边界的alpha是0或者是1啊。
难道我用的图片边界都有半透明?
谢谢回复。
我觉得cocos默认使用BlendFunc::ALPHA_PREMULTIPLIED是在cpu上计算混合,所以先预乘一下。
一般混合是{SRC_ALPHA,ONE_MINUS_ALPHA}交给openGL利用gpu后乘(对应预乘)处理最终的颜色。
所以预乘跟显示效果是有关系的。
最后我问的白边问题,我是觉得按理说不管预乘与否都不应该出现白边啊,因为边界的alpha是0或者是1啊。
难道我用的图片边界都有半透明?
这张图没有预乘也没有白边。。。
http://forum.cocos.com/uploads/default/original/2X/5/5e22fce09b3f9f888d802687afdf3df32456533f.png
理解不了了。。。
1.边界alpha是0或1?谁告诉你的,你自己画个没有白边的图看边缘像素?你为什么不拿有白边的图看边缘,有问题就拿有问题的东西研究,别自己画个其他的东西就得出结论
2.像素显示是一个一个矩形色块,曲线实际上也是若干直线组成,你放大图片,就会有锯齿,怎么解决锯齿问题,你画个圆,看看边缘你就知道了
3.什么cpu,gpu,什么就“什么什么了”就“所以”了,完全不知道你在说啥,别你觉得是啥就说啥,贴资料,贴数据
4.我没说预乘和最终效果没关系,我说没有必然关系,因为决定最终显示是数据,怎么算得到的数据是根本,图片本身存储数据,引擎和底层渲染处理数据,传给gpu渲染,所以我说“不同混合运算,最终效果自然不同”
使用cocos create 2.0.5 遇到同一问题,图片输出premultiply alpha 设为true勾上,sprite src blend :ONE,dst blend :ONE_MINUS_SRC_ALPHA 搞定了,感谢楼主
老哥。。。最新版本的creator,TP预乘打图,引擎设置one,图片能正常显示,但是设置节点透明度后,图片就开变亮变白而不透明,这个是有bug么
修正一下是有透明,但是会变亮变白
你是说 255 时正常,透明度低于 255 就变亮变白?
恩。。。255是正常的,低于255就变亮变白,之前看有篇帖子说这个是bug已经解决了。。。但是这边不知道为什么还是出现,我的引擎版本是2.3.0-rc1。。。。。。。。。。。。。。。。。。。。。。。
!!!!!感谢解答,有参考确实是解决了,不过我们用了一种特殊的方案,把materials新增了文章所说的材质球,但是是放在了res下面,依然能使用,请问这种方式会不会有什么额问题呢。
没什么问题,只要能加载到
恩,另外再咨询您一下,目前creator支持使用多边形打包么
支持,导进来直接用就行
您好,想追加问一句,如果说我想把DragonBones里制作好的龙骨动画导入到cocos里,采用dragonBones组件时,并不像sprite一样可以修改blend模式为1,图片白边灰边依然还是存在。是否有什么解决方法可以实现对dragonBones制作的动画也采取预乘+blend为One的方式来消除边际呢?谢谢!
图片资源和动画都勾选预乘模式就好了,设置完后重启下编辑器。
请给一个 demo
creator版本:2.4.3
electron版本:15.3.0
chrome上 不做预乘会有黑边 预乘后正常
electorn上 不做预乘会有白边 预乘后正常
游戏项目已上线 大量bundle资源 将全部素材做预乘然后全部设置one已经不考虑
怎么能保证在electron上达到跟chrome一样的显示效果呢?
同样的内核 造成显示不同的原因是啥?
还有 我现在理解修改引擎源码 读取图片时做预乘,sprite默认使用one 是否能达到2d-x的效果呢?
麻烦引擎大大们看见回复一下