【问题标题】:Changing BackBuffer Height/Width in XNA - unwanted results在 XNA 中更改 BackBuffer 高度/宽度 - 不需要的结果
【发布时间】:2013-09-06 17:26:14
【问题描述】:

我对 XNA 有点陌生,但我会尽力解释我的问题。

我想通过设置graphics.PreferredBackBufferHeightgraphics.PreferredBackBufferWidth 来更改游戏中的分辨率。

通过将graphics.PreferredBackBufferWidth 设置为1920,并将graphics.PreferredBackBufferHeight 设置为1080,游戏初始化正常。

但是,通过按下按钮,我希望将 graphics.PreferredBackBufferWidth 设置为 1280,并将 graphics.PreferredBackBufferHeight 设置为 720。 (两种分辨率都是16:9

但是,正如您所料,在 Initialize 方法中初始化 graphics.PreferredBackBufferWidthgraphics.PreferredBackBufferHeight 可以正常工作。 但是通过更改这两个值,然后是graphics.ApplyChanges()OUTSIDE初始化,屏幕要么以奇怪的方式拉伸,要么根本无法正常显示。

  • 如何在 Initialize 之外更改 BackBuffer 宽度/高度?
  • 如果我在 Initialize 中设置了这些,为什么会不一样?
  • 我必须再次调用 Initialize 吗?

【问题讨论】:

  • 你能详细说明它的作用吗?甚至是一些代码,说明您在何处以及如何进行更改。一两个屏幕截图也不错。它可能不是改变本身,而是你如何绘制你的对象
  • 听起来您确实在某处遗漏了一步,或者可能遗漏了ApplyChanges。如果可以,请发布一些代码(我知道很难精简 xna 代码,但请不要发布 all 您的代码)。
  • 不幸的是,由于我使用了许多枚举、类等,我的使用代码很难理解。在 Initialize() 中,我基本上设置了 graphics.IsFullscreen = true。稍后,在更新事件中,它将设置
  • 对不起 - 我对 StackExchange 有点陌生,如果我按 Enter 键,请道歉,换行,而不是发表评论。在 Update() 中,它将重新设置 PreferredBackBuffer 的宽度和高度。其次是 graphics.ApplyChanges()。
  • 您知道您可以随时编辑您的 cmets/帖子。

标签: c# graphics xna resolution


【解决方案1】:

根据与 cmets 部分中 OP 的对话,似乎问题在于将图形设置为全屏,因为它正在拉伸屏幕以处理较小的分辨率。

【讨论】:

  • 1920x1080 和 1280x720 的比例均为 16:9(乘以 1.5)。我得到了水平的黑条,它占据了至少 50% 的屏幕。我需要重新设置全屏布尔值吗?
  • 不画东西的时候会出现黑条吗?你使用的是默认的 spritebatch.Begin() 吗?
  • 确实我使用的是标准 spriteBatch.Begin/Draw.. 澄清一下,这个问题仅在游戏处于全屏模式时出现。 graphics.IsFullscreen 渲染窗口似乎是在宽度上拉伸的,而不是在高度上,这解释了黑条。
  • 在这一点上,我将不得不要求一个代码示例。能够运行与您相同的代码将使我能够直观地看到问题并调试问题。如果可能的话,请用您的代码更新您的问题。
猜你喜欢
  • 1970-01-01
  • 2012-05-16
  • 2015-06-06
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
相关资源
最近更新 更多