我有一個奇怪的問題,我認爲我對XNA框架的相對缺乏知識禁止我修復。XNA新的Texture2D保留舊數據
基本上我有一個Texture2D引用被設置爲一個新的Texture2D實例。在運行期間,它的一些像素被設置,並且這一切都與其在遊戲循環中的繪製非常吻合。
奇怪的是,如果我將引用設置爲null,(它將只繪製,如果不爲null),它按預期不會繪製。
後來,我設置了一個新的Texture2D的引用,它開始繪製它到屏幕。問題是它保存了原始Texture2D對象的所有數據。
編輯
對不起,我清楚之前wasnt。
我所擁有的是這樣的事情...
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,.....);
}
}
第二個編輯
我還設置一個for循環和手動紋理的每個像素設置爲顏色是後創建。這項工作仍然顯示像素爲我以前設置的顏色。這很奇怪。
請忽略此線程。這個問題非常令人尷尬,我自己也在做。我有一些緩衝了像素的代碼被改變,是的...你猜對了,我沒有清除它,它在新的紋理實例上重新開始工作。
很不好意思....
嗨對不起,混淆,我更新了示例代碼的問題。 – Nick