Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XNA新纹理2D保留旧数据_C#_Xna_Texture2d - Fatal编程技术网

C# XNA新纹理2D保留旧数据

C# XNA新纹理2D保留旧数据,c#,xna,texture2d,C#,Xna,Texture2d,我有一个奇怪的问题,我认为我对XNA框架的知识相对缺乏,这使我无法解决这个问题 基本上,我有一个Texture2D引用,它被设置为Texture2D的一个新实例。在运行期间,它的一些像素被设置,这一切都很好地工作,因为它在gameloop中绘制 奇怪的是,如果我将引用设置为null(只有在不为null的情况下才会绘制),它就不会按预期绘制 稍后,我将引用设置为一个新的Texture2D,它开始将其绘制到屏幕上。问题是它保存原始Texture2D对象的所有数据 编辑 对不起,我以前不清楚 我所拥有

我有一个奇怪的问题,我认为我对XNA框架的知识相对缺乏,这使我无法解决这个问题

基本上,我有一个Texture2D引用,它被设置为Texture2D的一个新实例。在运行期间,它的一些像素被设置,这一切都很好地工作,因为它在gameloop中绘制

奇怪的是,如果我将引用设置为null(只有在不为null的情况下才会绘制),它就不会按预期绘制

稍后,我将引用设置为一个新的Texture2D,它开始将其绘制到屏幕上。问题是它保存原始Texture2D对象的所有数据

编辑

对不起,我以前不清楚

我所拥有的是这样的东西

private Texture2D WorkingTexture{get;set;}
私有void更新()
{
如果(某些输入)
{
this.WorkingTexture=null;
}
如果(其他输入)
{
this.WorkingTexture=新纹理2D(this.GraphicsDevice,500500,true,SurfaceFormat.Color);
SetData(0,新矩形((int)vector2.X,(int)vector2.Y,4,4),颜色,0,16);
}
}
私人提款()
{
如果(this.WorkingTexture!=null)
{
spritebatch.draw(此.WorkingTexture,…);
} 
}
第二次编辑

我还设置了一个for循环,并在创建纹理后手动将纹理的每个像素设置为一种颜色。这是可行的,但它仍然显示我之前设置的颜色像素。这很奇怪


请忽略此线程。这个问题是我自己做的,非常尴尬。我有一些缓冲像素的代码要更改,是的。。。你猜到了,我没有清除它,它在新的纹理实例上重新进行工作


非常尴尬……

没有太多细节,听起来好像您正试图加载纹理2D,其中包含您之前所做的更改。由于将其设置为null,因此当重新加载纹理2D时,它将恢复到原始状态。如果要再次使用,则需要保存对像素所做的更改,以供以后使用。希望这有帮助

所以你设置了这样的纹理

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

如何创建纹理?如果您从资源(texture=Content.load(“texture\u name”))加载它们,您描述的问题听起来像是逻辑中的错误:您的程序没有执行您认为它正在执行的操作。跟踪,调试


如果要创建全新的纹理(纹理=新纹理2d(…),则可能(未验证)新纹理未初始化,并且正在从某种内存池中检索其内存空间,因此检索最近标记为dispose的纹理数据。创建纹理数据后,请尽快初始化纹理数据,例如,将其设置为全黑。

您好,很抱歉弄混了,我用示例代码更新了问题。谢谢,是的,我尝试用颜色填充纹理,但没有任何区别,就像一旦有纹理在其中,每当我绘制参考时,它都会绘制,无论连接到哪个Texture2D实例。
texture = Content.Load<Texture2D>("other_texture_name");
BasicEffect effect = new BasicEffect(GraphicsDevice);
effect.Texture = texture;
effect.CurrentTechnique.Passes[0].Apply();