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》,变化真大

现在的编辑器

QQ截图20110709151442

QQ截图20110709151536

没alpha预处理的效果:

QQ截图20110709151730

有alpha预处理的效果:

QQ截图20110709151604

原文地址:https://www.cnblogs.com/fourleg/p/2101800.html