C# 带有类的XNA Spritebatch.End()不';启动时无法工作

C# 带有类的XNA Spritebatch.End()不';启动时无法工作,c#,xna,C#,Xna,XNA spritebatch.End();一个类不起作用,它说:“XNA Framework Reach profile要求TextureAddressMode在使用不是二次幂的纹理大小时处于钳制状态。”。它也没有显示任何错误。我怎样才能解决这个问题?请帮忙 public override void Draw() { Statics.SPRITEBATCH.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Sa

XNA spritebatch.End();一个类不起作用,它说:“XNA Framework Reach profile要求TextureAddressMode在使用不是二次幂的纹理大小时处于钳制状态。”。它也没有显示任何错误。我怎样才能解决这个问题?请帮忙

 public override void Draw()
    {
        Statics.SPRITEBATCH.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearWrap, null,null);

        Statics.SPRITEBATCH.Draw(this.background, Vector2.Zero, Color.White);

        foreach (var item in Tuyaux)
        {
            item.Draw();
        }

        Statics.SPRITEBATCH.Draw(this.sand, new Vector2(0, 529), Color.White);

        Scroll.Draw();

        Bird.Draw();

        Statics.SPRITEBATCH.DrawString(this.Font, "Score : " + this.score.ToString(), new Vector2(10, 10), Color.Red);

        if (Bird.dead)
        {
            // rode gloed over het spel als het gameover is.
            Statics.SPRITEBATCH.Draw(Statics.PIXEL, new Rectangle(0,0, Statics.GAME_WIDTH,Statics.GAME_HEIGHT), new Color(1f, 0f, 0f, 0.3f));
            // gameover achtergrond laten zien.
            Statics.SPRITEBATCH.Draw(this.gameover, new Vector2(0, 80), Color.White);
        }

        Statics.SPRITEBATCH.End(); 
        base.Draw();
    }

问题正是异常告诉您的:

您的目标是到达轮廓,因此您的所有纹理尺寸必须是二的幂,或者您必须使用钳制作为地址模式。因此:

  • 如果您不需要包装,请尝试将
    Statics.SPRITEBATCH.Begin
    调用中的
    samplestate.LinearWrap
    替换为
    samplestate.linearamp
  • 如果需要包装纹理,请确保所有纹理的尺寸都是二的幂
  • 最后但并非最不重要的一点是,如果这是您的一个选项,您可以简单地使用
    HiDef
    配置文件,而不是
    Reach
什么是“有课”的意思?我非常确定,实际上,你只需要使用二次幂的纹理大小,因为你是根据Reach配置文件编译的,而不是使用Clamp!什么维度是
this.background
this.sand
Statics.PIXEL
(我希望是1x1)和
this.gameover
?我怀疑您正在使用自己的
Draw
方法绘制相同的
SpriteBatch
。。。检查使用的纹理也有。异常准确地说明了问题所在;-)