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 に答える