在XNA中,當調用Content.Load()在資源中加載時,如果將相同的資源加載到多個對象中(即可以有多個對象的炮彈的紋理)你是否得到每個對象的副本,還是系統只是在內部引用每個對象的相同內存?XNA Content.Load()內存使用
我意識到每個項目中都有一個單獨的Texture2D對象可能會成爲內存問題。
在XNA中,當調用Content.Load()在資源中加載時,如果將相同的資源加載到多個對象中(即可以有多個對象的炮彈的紋理)你是否得到每個對象的副本,還是系統只是在內部引用每個對象的相同內存?XNA Content.Load()內存使用
我意識到每個項目中都有一個單獨的Texture2D對象可能會成爲內存問題。
當您嘗試再次加載它時,ContentManager將緩存該對象並返回對該對象的引用。
是修改紋理數據將改變引用該數據的所有紋理。
如果您需要多個,然後複製原始文件並加載不同的版本。
嗯不是一個理想的解決方案...沒有辦法複製內存中的對象結構數據? – 2010-08-19 19:11:44
您將需要作出新的Texture2D對象,只是改變的數據複製到新的紋理與SetData方法:
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.setdata.aspx
所以,如果我加載到一個Texture2D在2個不同的對象,然後修改紋理數據在一個,它們兩個都改變了嗎? – 2010-08-19 18:41:03