【问题标题】:XNA Content.Load() Memory UsageXNA Content.Load() 内存使用
【发布时间】:2010-08-19 18:12:40
【问题描述】:

在 XNA 中,当调用 Content.Load() 加载资源时,如果您将相同的资源加载到多个对象中(例如,可以有多个弹丸的纹理),您是否会为每个对象获取一个副本,还是系统只是在内部为每个内存引用相同的内存?

我意识到在每个项目中都有一个单独的 Texture2D 对象可能是一个内存问题。

【问题讨论】:

    标签: c# windows graphics xna


    【解决方案1】:

    ContentManager 将缓存该对象并在您再次尝试加载该对象时返回对该对象的引用。

    【讨论】:

    • 那么,如果我在 2 个不同的对象中加载到 Texture2D 中,然后在一个对象中修改纹理数据,它们是否都会更改?
    【解决方案2】:

    是的,修改纹理数据将更改引用该数据的所有纹理。

    如果您需要多个文件,请复制原始文件并加载不同的版本。

    【讨论】:

    • 嗯不是一个理想的解决方案...没有办法复制内存中的对象结构数据?
    【解决方案3】:

    您需要创建一个新的 Texture2D 对象,然后使用 SetData 方法将更改的数据复制到新纹理中:
    http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.setdata.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多