XNA フレームワークに関する知識が相対的に不足しているため、修正できないと思われる奇妙な問題があります。
基本的に、Texture2D の新しいインスタンスに設定された Texture2D 参照があります。実行時に一部のピクセルが設定され、ゲームループで描画されるため、これはすべてうまく機能します。
奇妙なことに、参照を null に設定すると (null でない場合にのみ描画されます)、期待どおりに描画されません。
後で、新しい Texture2D への参照を設定すると、画面への描画が開始されます。問題は、元の Texture2D オブジェクトのすべてのデータを保持していることです。
編集
申し訳ありませんが、以前は明確ではありませんでした。
私が持っているのは、このようなものです...
private Texture2D WorkingTexture {get; set; }
private void Update()
{
if(some input)
{
this.WorkingTexture = null;
}
if(some other input)
{
this.WorkingTexture = new Texture2D(this.GraphicsDevice, 500, 500, true, SurfaceFormat.Color);
this.WorkingTexture.SetData<Color>(0, new Rectangle((int)vector2.X, (int)vector2.Y, 4, 4), colors, 0, 16);
}
}
private void Draw()
{
if (this.WorkingTexture != null)
{
spritebatch.draw(this.WorkingTexture,.....);
}
}
2回目の編集
また、for ループを設定し、テクスチャの作成後にテクスチャのすべてのピクセルを手動で色に設定しました。これは機能しますが、以前に設定した色としてピクセルを表示します。これは非常に奇妙です。
このスレッドは無視してください。この問題は非常に恥ずかしいことに、私自身がやったものです。変更するピクセルをバッファリングするコードがいくつかありましたが、そうです...あなたはそれをクリアしていないと推測し、新しいテクスチャインスタンスで作業をやり直していました。
とても恥ずかしい……。