0

我正在使用 Texture2D.Setdata 操作 Texture2D 并更改其颜色。

但是我想在一段时间后再次重置 Texture2D,目前我在内存中拥有整个纹理数据,但现在我的应用程序中有 OutOfMemoryExceptions。

我试过这个:

Color[] bla = new Color[thetexture.Width * thetexture.Height];
this.Content.Load<Texture2D>(".\\textures\\mytexture").GetData(bla);
thetexture.SetData(bla);

但它不会改变任何东西,纹理只是保持颜色。

我怎样才能重置纹理,让它看起来像刚加载的,但内存使用量很小?

4

1 回答 1

0

ContentManager缓存对象。您的调用Load是返回可能与您的对象相同thetexture的对象(您已经修改的对象)。

您需要使用原始数据加载纹理的单独实例。你需要一个单独ContentManager的。可能已经被定制为从不缓存对象。

或者,创建一个new Texture2D对象并将原始数据复制到该对象中,然后再对其进行修改,而原始数据保持不变。

于 2013-03-25T07:43:24.383 回答