Memory XNA游戏可以使用超过1.5GB的RAM而不崩溃吗?

Memory XNA游戏可以使用超过1.5GB的RAM而不崩溃吗?,memory,xna,out-of-memory,Memory,Xna,Out Of Memory,我想知道是否有可能将大量纹理加载到XNA游戏的内存中,而不会以某种方式出现内存异常 特别是在运行时从文件流中加载纹理。这样做是一个可怕的想法,原因与可寻址系统内存的数量无关(正如您所注意到的,由于XNA是一个32位库,它被限制在大约2GB) 为了进行渲染,必须将纹理加载到图形卡上的视频内存中。如今,高端桌面图形卡的容量约为2-3GB;低端和中端卡的成本要低得多。该内存不仅用于纹理,还用于视频卡上存在的所有对象,例如顶点缓冲区。如果您不是在独占模式下运行,那么这个内存可能会在多个应用程序之间共享。

我想知道是否有可能将大量纹理加载到XNA游戏的内存中,而不会以某种方式出现内存异常


特别是在运行时从文件流中加载纹理。

这样做是一个可怕的想法,原因与可寻址系统内存的数量无关(正如您所注意到的,由于XNA是一个32位库,它被限制在大约2GB)

为了进行渲染,必须将纹理加载到图形卡上的视频内存中。如今,高端桌面图形卡的容量约为2-3GB;低端和中端卡的成本要低得多。该内存不仅用于纹理,还用于视频卡上存在的所有对象,例如顶点缓冲区。如果您不是在独占模式下运行,那么这个内存可能会在多个应用程序之间共享。超过可用视频内存的数量将由于交换而导致性能显著下降


如果你真的想填满视频缓冲区(比如说,你正在为AAA游戏编写一个超高端图形模式),你必须要么采用一些先进的内存寻址技术,包括Win32 API,要么将纹理加载到图形设备中,而不必在系统内存中保留副本。这些技术超出了XNA的范围。

这样做是一个可怕的想法,原因与可寻址系统内存的数量无关(正如您所注意到的,XNA是一个32位库,因此限制在约2GB)

为了进行渲染,必须将纹理加载到图形卡上的视频内存中。如今,高端桌面图形卡的容量约为2-3GB;低端和中端卡的成本要低得多。该内存不仅用于纹理,还用于视频卡上存在的所有对象,例如顶点缓冲区。如果您不是在独占模式下运行,那么这个内存可能会在多个应用程序之间共享。超过可用视频内存的数量将由于交换而导致性能显著下降


如果你真的想填满视频缓冲区(比如说,你正在为AAA游戏编写一个超高端图形模式),你必须要么采用一些先进的内存寻址技术,包括Win32 API,要么将纹理加载到图形设备中,而不必在系统内存中保留副本。这些技术超出了XNA的范围。

为什么需要这样做?一级\map\demo需要大量的纹理。我为什么不呢?我想你问的问题可能是你不愿意的原因之一。基本上,对于单个环境来说,这是一个荒谬的纹理数据量。即使AAA开发人员也需要在专有高端引擎的限制范围内工作,这就是除了重复网格和其他资源外,还使用平铺纹理和LOD纹理的原因。为什么需要这样做?一级\map\demo需要大量的纹理。我为什么不呢?我想你问的问题可能是你不愿意的原因之一。基本上,对于单个环境来说,这是一个荒谬的纹理数据量。即使AAA开发者也需要在专有高端引擎的限制范围内工作,这就是除了重复网格和其他资源外,还使用平铺纹理和LOD纹理的原因。作为补充,如果您打算在单个环境中实现如此大量的纹理数据,您可以分区该区域并卸载旧纹理并在适当的位置加载新闻纹理。毫无疑问,你会在转换过程中受到性能的影响,但这比在图形内存中持续交换的性能问题要好。作为补充,如果你打算在一个环境中实现如此大量的纹理数据,你可以对该区域进行分区并卸载旧纹理并在适当的地方加载新闻纹理。毫无疑问,您将在转换时受到性能的影响,但这比图形内存中持续交换的性能问题要好。