XNA 没有经过Content Pipeline对内容做Alpha预处理解决办法
前几天发现32位png文件在XNA中显示没能正常显示,添加到Content经过编译后能正常显示,png文件体积变大了。
由于我是打包成资源文件的,而不是用XNB的,所以就想用代码把png编译成XNB文件,在通过ContentManager把
XNB文件转换成png文件,使其成为有alpha预处的文件。
解决办法:
1.XnaDeVRu.ContentBulider,这东西在网上找的,开源的,但编译用的代码过时了,代码长不怎么好理解,还是能用。
2.WinformsContentLoading里也有个ContentBuilder类,是新版的,代码短,而好理解
3.在SpriteBatch.Draw 添加参数BlendState.NonPremultiplied,是目前最简单的办法。
PS:第一,第二种办法都是对png先进行处理,由于不知道BlendState.NonPremultiplied对性能的影响如何,所以保留
第二种办法,以便以后提高性能
写编辑器也写了很久了,回看以前起步的那个程序 《山寨DNF》,变化真大
现在的编辑器
没alpha预处理的效果:
有alpha预处理的效果: