在XNA中,当调用Content.Load()来加载资源时,如果将相同的资源加载到多个对象中(即可以有许多对象的纹理)你是否获得了每个对象的副本,或者系统内部是否为每个内存引用相同的内存?
我意识到在每个项目中都有一个单独的Texture2D对象可能是一个内存问题。
答案 0 :(得分:8)
当您尝试再次加载该对象时,ContentManager将缓存该对象并返回对该对象的引用。
答案 1 :(得分:3)
是修改纹理数据将改变引用该数据的所有纹理。
如果您需要多个,请复制原始文件并加载不同的版本。
答案 2 :(得分:3)
您需要创建一个新的Texture2D对象,并使用SetData方法将更改的数据复制到新纹理中:
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.setdata.aspx