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