C# 带有类的XNA Spritebatch.End()不';启动时无法工作
XNA spritebatch.End();一个类不起作用,它说:“XNA Framework Reach profile要求TextureAddressMode在使用不是二次幂的纹理大小时处于钳制状态。”。它也没有显示任何错误。我怎样才能解决这个问题?请帮忙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
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
this.background
,this.sand
,Statics.PIXEL
(我希望是1x1)和this.gameover
?我怀疑您正在使用自己的Draw
方法绘制相同的SpriteBatch
。。。检查使用的纹理也有。异常准确地说明了问题所在;-)