我正在使用Texture2D.Setdata操作Texture2D并更改其颜色。
但是我想在一段时间之后重置Texture2D,目前我在内存中拥有整个纹理数据,但现在我的应用程序中有OutOfMemoryExceptions。
我试过这个:
Color[] bla = new Color[thetexture.Width * thetexture.Height];
this.Content.Load<Texture2D>(".\\textures\\mytexture").GetData(bla);
thetexture.SetData(bla);
但它不会改变任何东西,纹理只会保持颜色。
如何重置纹理,使它看起来像新装,但是有一个小的Memoryuse?
答案 0 :(得分:0)
ContentManager
缓存对象。您对Load
的调用将返回与您的thetexture
(您已修改过的人)相同的相同对象。
您需要使用原始数据加载纹理的单独实例。你需要一个单独的ContentManager
。可能是customised永远不会缓存对象的那个。
或者,创建一个new Texture2D
对象,然后在修改之前将原始数据复制到该对象中,保持原始数据不变。