2011-07-27 11 views
-1

私はXNAフレームワークの知識の私の相対的な不足が私を修正することを禁止すると信じて奇妙な問題があります。XNA new Texture2Dは古いデータを保持します

基本的に私はTexture2Dの新しいインスタンスに設定されているTexture2Dリファレンスを持っています。実行時に、そのピクセルのいくつかが設定され、これはすべてgameloopで描画されたようにうまく動作します。

奇妙なことは、nullに参照を設定した場合(nullでない場合のみ描画されます)、期待通りに描画されないことです。

その後、新しいTexture2Dへの参照を設定し、それを画面に描画し始めます。問題は、元のTexture2Dオブジェクトのすべてのデータを保持することです。私は前に明確な波平

申し訳

EDIT。私はループのためにも設定し、手動でそれが後の色にテクスチャのすべてのピクセルを設定している。このような何か...

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,.....); 
} 
} 

SECOND EDIT

で持って何

作成した。これはまだ動作しますが、以前に設定した色としてピクセルが表示されます。これは非常に奇妙です。


このスレッドは無視してください。問題は私自身がやっていることは非常に恥ずかしいほどでした。私はピクセルを変更してバッファリングするコードをいくつか持っていました...はい、あなたはそれをクリアしていないと思っていました。新しいテクスチャインスタンス上で作業をやり直していました。

非常に恥ずかしい

....

答えて

1

上に行くために多くの詳細がなくても、それはあなたが以前に行った変更とにTexture2Dをロードしようとしているように聞こえます。 Texture2Dをリロードすると、nullに設定されているので、元に戻ります。再度使用する場合は、後で使用するために加えた変更をピクセルに保存する必要があります。お役に立てれば!

1

ですから、この

Texture2D texture = Content.Load<Texture2D>("texture_name"); 

のような質感を設定して、その後、あなたはそれがとても

texture = Content.Load<Texture2D>("other_texture_name"); 

右のように、新たな基準を適用しますか?

それはそうではありません。特定のテクスチャを使用するようにGraphicsDeviceを設定する必要があります。 BasicEffectクラスでは、次のようになります。

BasicEffect effect = new BasicEffect(GraphicsDevice); 
effect.Texture = texture; 
effect.CurrentTechnique.Passes[0].Apply(); 
+0

こんにちは、混乱のために、私はサンプルコードで質問を更新しました。 – Nick

1

どのようにテクスチャを作成しますか?リソース(texture = Content.Load( "texture_name"))からそれらをロードすると、記述する問題はロジックのバグのように聞こえます。あなたのプログラムは自分が思っていることをしていません。トレース、デバッグ...

新しいテクスチャが作成されていない場合(テクスチャ=新しいTexture2D(...))、新しいテクスチャが初期化されておらず、そのメモリ空間がテンポラリデータを処理するために最近マークされたものを取り出すためのメモリプールのようなものです。作成するとすぐにテクスチャデータをすべて黒に設定するなどして、テクスチャデータを初期化してください。

+0

ありがとう、はい私は色でテクスチャを塗りつぶしてみましたが、違いはありません。その中にテクスチャがあると、Texture2Dのどのインスタンスに接続されているかにかかわらず、その参照を描画するたびに常に描画されます。 – Nick

関連する問題