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