在XNA Windowsphone中重新加载/重置Texture2D

时间:2013-03-24 19:20:17

标签: xna windows-phone reload reset texture2d

我正在使用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?

1 个答案:

答案 0 :(得分:0)

ContentManager缓存对象。您对Load的调用将返回与您的thetexture(您已修改过的人)相同的相同对象。

您需要使用原始数据加载纹理的单独实例。你需要一个单独的ContentManager。可能是customised永远不会缓存对象的那个。

或者,创建一个new Texture2D对象,然后在修改之前将原始数据复制到该对象中,保持原始数据不变。