Я знаю, что этот вопрос задавался много раз. Тем не менее, все решения, которые я нашел после более чем одного часа работы с поисковыми системами, - это, по сути, одно и то же. Все говорят, что для изменения размера окна в XNA вы просто добавляете следующие строки кода (или некоторые незначительные изменения этих строк кода) к вашему методу Initiate() в классе Game1:
//A lot of people say that the ApplyChanges() call is not necessary,
//and equally as many say that it is.
graphics.IsFullScreen = false;
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
graphics.ApplyChanges();
Это не работает для меня. Код компилируется и запускается, но абсолютно ничего не меняется. Я просматривал документацию для классов GraphicsDevice и GraphicsDeviceManager, но мне не удалось найти какую-либо информацию, указывающую, что мне нужно что-то делать, кроме вышеуказанного.
Я также довольно уверен, что моя видеокарта достаточно (ATI HD 5870), хотя кажется, что запись wiki на совместимость с графической картой XNA не обновлялась какое-то время.
Я работаю на Windows 7 с вышеуказанной графической картой, Visual С# 2010 Express и последней версией XNA.
Поэтому я просто надеюсь, что кто-то может помочь мне найти, где я запутался. Я отправлю весь свой класс Game1 (я переименовал его в MainApp) ниже. Если кто-нибудь захочет увидеть любой из других классов, которые вызваны, спросите, и я опубликую их.
public class MainApp : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Player player;
public MainApp()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize()
{
player = new Player();
//This does not do ANYTHING
graphics.IsFullScreen = false;
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
graphics.ApplyChanges();
base.Initialize();
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
Vector2 playerPosition = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X,
GraphicsDevice.Viewport.TitleSafeArea.Y
+ 2*(graphics.GraphicsDevice.Viewport.TitleSafeArea.Height / 3));
player.Initialize(Content.Load<Texture2D>("basePlayerTexture"),
playerPosition);
}
protected override void UnloadContent()
{
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
player.Draw(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
}
}
P.S. Это мой второй день с С#, поэтому, если это из-за действительно глупой ошибки, я приношу свои извинения за то, что тратил ваше время.