我正在研究XNA项目并遇到涉及内存使用的问题。我很好奇如果使用索引颜色PNG 8s与PNG 24s或PNG 32s某些纹理可以释放任何内存。它肯定会使应用程序变小,但我很好奇,如果XNA的内容管理器加载它们,它们会以某种方式变为未压缩或充当无损图像。
答案 0 :(得分:1)
我answered最近也出现了一个类似的问题。
如果您想在分发游戏时节省空间,可以分发PNG文件(也可以使用jpeg)并使用Texture2D.FromStream
加载它们。请注意,您必须自己处理预乘alpha等事情。
如果你想节省GPU上的空间(这也改善了纹理提取,因为传输的数据量较小),你可以使用较小的纹理格式。 this table中提供了支持的纹理格式列表。
虽然根本不支持托盘化图像(如PNG8)或8位彩色图像,但有几种16位格式(Bgr565
,Bgra5551
,Bgra4444
) 。 DXT compressed formats也可用。除了不透明的DXT1(6:1)外,它们以4:1的比例压缩。
您可以同时使用这两种技术。
答案 1 :(得分:0)
有人在我发布这个问题之后立即向我指出了Facebook上的这个链接。
http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh855082%28v=vs.92%29.aspx
显然,在XNA中,任何类型的PNG在内存中都是未压缩的,我应该看一下使用DXT。