我想知道是否可以将大量纹理加载到 XNA 游戏的内存中,并且不会以某种方式出现内存异常。
特别是在运行时从文件流中加载纹理。
这样做是一个可怕的想法,原因与可寻址系统内存的数量无关(正如您所指出的,由于 XNA 是一个 32 位库,因此限制在大约 2GB 左右)。
为了进行渲染,纹理必须加载到显卡的显存中。如今,高端台式机显卡有 2-3GB 左右;低端和中端卡的数量要少得多。此内存不仅用于纹理,还用于视频卡上存在的所有对象,例如顶点缓冲区。如果你不是在独占模式下运行,那么这个内存可能会在多个应用程序之间共享。由于交换,超过可用视频内存量将导致性能显着下降。
如果您真的打算填满该视频缓冲区(例如,您正在为 AAA 游戏编写超高端图形模式),则必须使用一些涉及 Win32 API 的高级内存寻址技术或将纹理加载到图形设备中,而不在系统内存中保留副本。这些技术超出了 XNA 的范围。