我有一个奇怪的问题,我认为我对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