C#托管DirectX sprite2D定位错误?

时间:2016-02-09 18:07:25

标签: c# directx sprite game-engine managed

我想绘制2D精灵。 这是奇怪的事情:如果我Sprite.Draw2D首次超载:

using (Sprite Spr = new Sprite(Gfx))
{
  Spr.Begin(SpriteFlags.AlphaBlend);
  int SprY = Gfx.PresentationParameters.BackBufferHeight/2;    
  int SprX = Gfx.PresentationParameters.BackBufferWidth/2;   
  Spr.Draw2D(Tex, new Point(0,0), 0.0f, new Point(SprX,SprY), Color.White);
  Spr.End();
  while (!Spr.Disposed)
    Spr.Dispose();
}

它位于128,128。 但我想缩小我的形象。 所以我使用Sprite.Draw2D的第三次重载:

Spr.Draw2D(Tex, new Rectangle(0, 0, 1024, 1024), new Rectangle(0,0,256,256), new Point(SprX,SprY) , Color.White);

然后,它吸引到我们的位置(但是正确的大小)。 我发现在第3次重载= 1280的情况下屏幕宽度。 无论PresentationParameters还是ViewPort大小。即使在其他机器上它也是1280,中心将是640。

我尝试调试Gfx(设备)对象并查看是否有任何“1280”数字的出现,并且它出现在Gfx.DisplayMode中。不幸的是,我无法设置此参数,因为MSDN说“Device.SetDisplayMode已被弃用”。我测试“游戏”的两台计算机之间的DisplayMode.Width是不同的。

可能我错过了一些真正巨大的东西并堆叠在上面。

顺便说一下,如果这很重要,我可以使用"C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0"中的DirectX库。

0 个答案:

没有答案